UNPKG

@kelvininc/ui-components

Version:
332 lines (320 loc) 11.6 kB
/** HEADINGS **/ /** LABELS **/ /** SPANS **/ /** PARAGRAPHS **/ /** TODO: CODE/CONSOLE **/ @property --rotation { syntax: "<angle>"; initial-value: 0deg; inherits: false; } @keyframes rotate-border { to { --rotation: 360deg; } } /** * Design Tokens - Auto-generated by Style Dictionary * Do not edit manually - run `pnpm tokens:build` to regenerate */ kv-dropdown-base:not(.hydrated) > [slot=list] { display: none; } :host { /** * @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 --input-height-large: Text Field's height when size is large. * @prop --input-height-small: Text Field's height when size is small. * @prop --input-gap-x: Horizontal gap between input elements. * @prop --input-prefix-spacing-x: Horizontal spacing for value prefix. * @prop --input-gap-y: Vertical gap between input container sections. * @prop --input-padding-x-large: Horizontal padding when size is large. * @prop --input-padding-x-small: Horizontal padding when size is small. * @prop --input-radius-large: Border radius when size is large. * @prop --input-radius-small: Border radius when size is small. * @prop --input-border-thickness: Input border thickness. * @prop --icon-size-large: Left icon width and height when size is large. * @prop --icon-size-small: Left icon width and height when size is small. * @prop --action-icon-size: Right action icon width and height. * @prop --text-color-input-default: Placeholder text color when state is default. * @prop --text-color-input-focused: Input text color when state is focused. * @prop --text-color-input-filled: Input text color when state is filled. * @prop --text-color-input-disabled: Input text color when state is disabled. * @prop --text-color-placeholder-disabled: Placeholder text color when state is disabled. * @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 --text-color-icon-default: Icon color when state is default. * @prop --text-color-icon-focused: Icon color when state is focused. * @prop --text-color-icon-filled: Icon color when state is filled. * @prop --text-color-icon-disabled: Icon color when state is disabled. * @prop --text-color-action-icon-default: Action icon color when state is default. * @prop --text-color-action-icon-focused: Action icon color when state is focused. * @prop --text-color-action-icon-filled: Action icon color when state is filled. * @prop --text-color-action-icon-disabled: Action icon color when state is disabled. * @prop --border-color-default: Border color when state is default. * @prop --border-color-focused: Border color when state is focused. * @prop --border-color-filled: Border color when state is filled. * @prop --border-color-disabled: Border color when state is disabled. * @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-width: auto; --input-min-width: 140px; --input-max-width: 100%; --input-height-large: var(--input-height-regular); --input-height-small: var(--input-height-compact); --input-gap-x: var(--input-gap-vertical-default); --input-prefix-spacing-x: var(--input-gap-vertical-small); --input-gap-y: var(--input-gap-horizontal-horizontal); --input-padding-x-large: var(--input-padding-x-regular); --input-padding-x-small: var(--input-padding-x-compact); --input-radius-large: var(--input-radius-regular); --input-radius-small: var(--input-radius-compact); --input-border-thickness: var(--input-border-thickness-default); --icon-size-large: var(--input-icon-size-regular); --icon-size-small: var(--input-icon-size-regular); --action-icon-size: var(--size-lg); --text-color-input-default: var(--input-text-text-input-default); --text-color-help-text-default: var(--input-text-helper-text-default); --border-color-default: var(--input-border-color-default); --background-color-default: var(--input-background-default); --text-color-icon-default: var(--input-icon-color-default); --text-color-action-icon-default: var(--input-icon-color-default); --text-color-input-focused: var(--input-text-text-input-selected); --border-color-focused: var(--input-border-color-selected); --text-color-icon-focused: var(--icon-interactive-input-selected); --text-color-action-icon-focused: var(--icon-interactive-input-selected); --text-color-input-filled: var(--input-text-text-input-filled); --text-color-icon-filled: var(--icon-interactive-input-filled); --text-color-action-icon-filled: var(--icon-interactive-input-filled); --border-color-filled: var(--input-border-color-filled); --text-color-input-disabled: var(--input-text-text-input-disabled); --text-color-placeholder-disabled: var(--input-text-text-input-disabled); --border-color-disabled: var(--input-border-color-disabled); --background-color-disabled: var(--input-background-disabled); --text-color-icon-disabled: var(--icon-interactive-input-disabled); --text-color-action-icon-disabled: var(--icon-interactive-input-disabled); --text-color-help-text-error: var(--input-text-helper-text-error); --border-color-error: var(--input-border-color-error); } kv-form-label { --label-color: var(--input-text-label-default); --label-gap: var(--input-gap-vertical-small); --label-required-color: var(--input-text-required-default); --label-bottom-spacing: var(--spacing-none); } kv-form-help-text { --help-text-default-color: var(--text-color-help-text-default); --help-text-error-color: var(--text-color-help-text-error); --help-text-top-spacing: var(--spacing-none); --help-text-bottom-spacing: var(--spacing-none); --help-text-right-spacing: var(--spacing-none); --help-text-left-spacing: var(--spacing-none); } kv-tooltip::part(content) { width: 100%; } .text-field-container { display: flex; flex-direction: column; gap: var(--input-gap-y); } .resize-container { display: inline-block; position: relative; flex: 1; overflow: hidden; } .resize-input, .resize-text { font-family: Proxima Nova; font-weight: 400; font-size: 14px; line-height: 20px; letter-spacing: 0; flex: 1; appearance: textfield; border: 0; height: 100%; outline: 0; box-sizing: border-box; color: var(--text-color-input-filled); background-color: transparent; } .resize-text { display: inline-block; visibility: hidden; white-space: pre; } .resize-input { position: absolute; top: -1px; left: 0; right: 0; bottom: 0; } input { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding: 0; } input::placeholder { color: var(--text-color-input-default); } input:focus, input.forced-focus { color: var(--text-color-input-focused); } input:read-only:not(:disabled) { cursor: pointer; } input:disabled { color: var(--text-color-input-disabled); } input:disabled::placeholder { color: var(--text-color-placeholder-disabled); } 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); border: solid var(--input-border-thickness) var(--border-color-default); position: relative; overflow: hidden; background-color: var(--background-color-default); box-sizing: border-box; } .input-container.filled { border-color: var(--border-color-filled); } .input-container.focused { border-color: var(--border-color-focused); } .input-container.invalid { border-color: var(--border-color-error); } .input-container.disabled { border-color: var(--border-color-disabled); background-color: var(--background-color-disabled); } .input-container:has(input:read-only:not(:disabled)) { cursor: pointer; } .input-container .left-slot-container, .input-container .right-slot-container { height: 100%; display: flex; align-items: center; gap: var(--spacing-xs); color: var(--text-color-input-default); } .input-container .left-slot-container.filled, .input-container .right-slot-container.filled { color: var(--text-color-input-filled); } .input-container .left-slot-container.focus, .input-container .right-slot-container.focus { color: var(--text-color-input-focused); } .input-container .left-slot-container.disabled, .input-container .right-slot-container.disabled { color: var(--text-color-input-disabled); } .input-container .left-slot-container { color: var(--text-color-input-filled); overflow: hidden; user-select: none; margin-right: var(--input-gap-x); } .input-container .left-slot-container.has-value-prefix { margin-right: var(--input-prefix-spacing-x); } .input-container .left-slot-container kv-icon { --icon-color: var(--text-color-icon-default); } .input-container .left-slot-container kv-icon.filled { --icon-color: var(--text-color-icon-filled); } .input-container .left-slot-container kv-icon.focus { --icon-color: var(--text-color-icon-focused); } .input-container .left-slot-container kv-icon.disabled { --icon-color: var(--text-color-icon-disabled); } .input-container .left-slot-container .value-prefix { white-space: nowrap; font-family: Proxima Nova; font-weight: 600; font-size: 14px; line-height: 20px; letter-spacing: 0; } .input-container .right-slot-container { justify-content: center; margin-left: var(--input-gap-x); } .input-container .right-slot-container kv-icon { --icon-color: var(--text-color-action-icon-default); --icon-width: var(--action-icon-size); --icon-height: var(--action-icon-size); } .input-container .right-slot-container kv-icon.filled { --icon-color: var(--text-color-action-icon-filled); } .input-container .right-slot-container kv-icon.focus { --icon-color: var(--text-color-action-icon-focused); } .input-container .right-slot-container kv-icon.disabled { --icon-color: var(--text-color-action-icon-disabled); } .input-container .right-slot-container:not(.disabled) { cursor: pointer; } .input-container--size-large { height: var(--input-height-large); border-radius: var(--input-radius-large); padding: 0 var(--input-padding-x-large); } .input-container--size-large .left-slot-container kv-icon { --icon-width: var(--icon-size-large); --icon-height: var(--icon-size-large); } .input-container--size-small { height: var(--input-height-small); border-radius: var(--input-radius-small); padding: 0 var(--input-padding-x-small); } .input-container--size-small .left-slot-container kv-icon { --icon-width: var(--icon-size-small); --icon-height: var(--icon-size-small); } .input-container-loading { width: 100%; display: flex; margin-top: var(--spacing-xs); background: linear-gradient(90deg, color-mix(in srgb, var(--background-color-disabled) 30%, transparent) 0%, var(--background-color-disabled) 50%, color-mix(in srgb, var(--background-color-disabled) 30%, transparent) 100%); background-size: 200%; animation: ghostGradientAnimation 0.8s infinite ease-out; border-radius: 4px; } @keyframes ghostGradientAnimation { 0% { background-position: -100% 0; } 100% { background-position: 100% 0; } } .input-container-loading--size-large { height: var(--input-height-large); } .input-container-loading--size-small { height: var(--input-height-small); }