UNPKG

@sinchsmb/ui-kit

Version:

UI kit for SinchSMB frontend

97 lines (81 loc) 2.6 kB
import { AriaAttributes } from 'react'; import { css } from 'styled-components/macro'; import { color, radius, shadow } from '../theme'; export const commonInputBaseStyles = css` background-color: ${color('sys/color/input/background/default')}; border-radius: ${radius('sys/radius/form-item')}; box-sizing: border-box; color: ${color('sys/color/text/primary')}; font-size: 14px; height: 36px; outline: none; padding: 6px 8px; text-overflow: ellipsis; width: 100%; &::placeholder { color: ${color('sys/color/text/disabled')}; } &:disabled { background-color: ${color('sys/color/input/background/disabled')}; color: ${color('sys/color/text/disabled')}; cursor: not-allowed; } `; /** * **IMPORTANT**: Pay attention that some components has their onw styled separated from this. * Don't forget to fix it to on any this changes. * * @see inputBorderContainerStyles */ export const commonInputStyles = css` @mixin ${commonInputBaseStyles}; border: 1px solid ${color('sys/color/input/border/default')}; transition: border-color 0.2s ease-out, box-shadow 0.2s ease-out; &[aria-invalid='true'] { border-color: ${color('sys/color/input/border/invalid')}; } &:hover:not(&:disabled) { border: 1px solid ${color('sys/color/input/border/focus')}; } &:focus:not(&:disabled) { border: 1px solid ${color('sys/color/input/border/focus')}; box-shadow: ${shadow('sys/shadow/focus')}; } `; /* Styles for wrapper of {@link TextField} and {@link TextArea} */ export const inputBorderContainerStyles = (props: { $invalid?: AriaAttributes['aria-invalid']; $disabled?: boolean; }) => { return css` background-color: ${() => { if (props.$disabled) { return color('sys/color/input/background/disabled'); } return color('sys/color/input/background/default'); }}; border: 1px solid ${color('sys/color/input/border/default')}; border-color: ${() => { if (props.$invalid) { return color('sys/color/input/border/invalid'); } if (props.$disabled) { return color('sys/color/input/border/disabled'); } return color('sys/color/input/border/default'); }}; border-radius: ${radius('sys/radius/form-item')}; &:focus-within { box-shadow: ${shadow('sys/shadow/focus')}; border-color: ${color('sys/color/input/border/focus')}; } &:hover { border-color: ${() => { if (props.$disabled) { return undefined; } return color('sys/color/input/border/focus'); }}; } `; };