apphouse
Version:
Component library for React that uses observable state management and theme-able components.
87 lines (77 loc) • 2.03 kB
text/typescript
import { CSSProperties } from 'glamor';
import { InputStyles } from './defaults/themes.interface';
import { BaseStyleProps } from './baseStyles.interface';
import { getBoxSizedStyles } from './getBoxSizedStyles';
import { toRems } from '../utils/units/toRems';
export const DEFAULT_INPUT_HEIGHT = 38;
export const getInputStyles = ({
colors,
tokens
}: BaseStyleProps): InputStyles => {
const { radius, fontFamily, lineHeight } = tokens;
const getResetMarginBlockStyles = () => {
return {
marginBlockEnd: '0px',
marginBlockStart: '0px',
marginInlineEnd: '0px',
marginInlineStart: '0px'
};
};
const boxSizedStyles = getBoxSizedStyles(tokens, 'px');
const defaultStyle: CSSProperties = {
backgroundColor: colors.surface10,
border: `1px solid`,
borderColor: colors.onPrimary_10,
borderRadius: radius.default,
color: colors.onPrimary,
lineHeight: lineHeight?.standard,
fontFamily: fontFamily.default,
fontWeight: tokens.fontWeight.bold,
...getResetMarginBlockStyles(),
'::placeholder': {
color: colors.onPrimary_50
},
':disabled': {
opacity: 0.3,
cursor: 'not-allowed',
Selection: 'none'
},
':focus': {
transition: '0.5s'
}
};
const xSmallStyles: CSSProperties = {
...defaultStyle,
...boxSizedStyles.xs,
lineHeight: toRems(14)
};
const smallStyles: CSSProperties = {
...defaultStyle,
...boxSizedStyles.s,
lineHeight: toRems(16)
};
const mediumStyles: CSSProperties = {
...defaultStyle,
...boxSizedStyles.m,
lineHeight: toRems(16)
};
const largeStyles: CSSProperties = {
...defaultStyle,
...boxSizedStyles.l,
lineHeight: toRems(19)
};
const xLargeStyles: CSSProperties = {
...defaultStyle,
...boxSizedStyles.xl,
lineHeight: toRems(16)
};
return {
xs: xSmallStyles,
s: smallStyles,
m: mediumStyles,
l: largeStyles,
xl: xLargeStyles,
xxl: xLargeStyles,
xxxl: xLargeStyles
};
};