|
1 |
| -import { pxToRem } from '../../../../lib' |
2 |
| -import { ComponentSlotStylesInput, ICSSInJSStyle } from '../../../types' |
| 1 | +import { ComponentSelectorsAndStyles } from '../../../types' |
3 | 2 | import { AvatarProps } from '../../../../components/Avatar/Avatar'
|
| 3 | +import { AvatarVariables } from 'src/themes/teams/components/Avatar/avatarVariables' |
| 4 | +import { backportComponentStyle } from 'src/lib/resolveComponentRules' |
4 | 5 |
|
5 |
| -const sizeToPxValue = { |
6 |
| - smallest: 24, |
7 |
| - smaller: 24, |
8 |
| - small: 24, |
9 |
| - medium: 32, |
10 |
| - large: 36, |
11 |
| - larger: 42, |
12 |
| - largest: 48, |
13 |
| -} |
| 6 | +const avatarStyles: ComponentSelectorsAndStyles<AvatarProps, AvatarVariables> = v => ({ |
| 7 | + root: [ |
| 8 | + [ |
| 9 | + null, |
| 10 | + { |
| 11 | + position: 'relative', |
| 12 | + backgroundColor: 'inherit', |
| 13 | + display: 'inline-block', |
| 14 | + verticalAlign: 'middle', |
| 15 | + height: v.medium, |
| 16 | + width: v.medium, |
| 17 | + }, |
| 18 | + ], |
| 19 | + [{ size: 'smallest' }, { width: v.smallest, height: v.smallest }], |
| 20 | + [{ size: 'smaller' }, { width: v.smaller, height: v.smaller }], |
| 21 | + [{ size: 'small' }, { width: v.small, height: v.small }], |
| 22 | + [{ size: 'medium' }, { width: v.medium, height: v.medium }], |
| 23 | + [{ size: 'large' }, { width: v.large, height: v.large }], |
| 24 | + [{ size: 'larger' }, { width: v.larger, height: v.larger }], |
| 25 | + [{ size: 'largest' }, { width: v.largest, height: v.largest }], |
| 26 | + ], |
14 | 27 |
|
15 |
| -const avatarStyles: ComponentSlotStylesInput<AvatarProps, any> = { |
16 |
| - root: ({ props: { size } }): ICSSInJSStyle => { |
17 |
| - const sizeInRem = pxToRem(sizeToPxValue[size]) |
| 28 | + // |
| 29 | + // Image |
| 30 | + // |
| 31 | + image: [ |
| 32 | + [ |
| 33 | + null, |
| 34 | + { |
| 35 | + borderColor: v.avatarBorderColor, |
| 36 | + borderStyle: 'solid', |
| 37 | + borderWidth: v.avatarBorderWidth, |
18 | 38 |
|
19 |
| - return { |
20 |
| - position: 'relative', |
21 |
| - backgroundColor: 'inherit', |
22 |
| - display: 'inline-block', |
23 |
| - verticalAlign: 'middle', |
24 |
| - height: sizeInRem, |
25 |
| - width: sizeInRem, |
26 |
| - } |
27 |
| - }, |
28 |
| - image: ({ variables: v }): ICSSInJSStyle => ({ |
29 |
| - borderColor: v.avatarBorderColor, |
30 |
| - borderStyle: 'solid', |
31 |
| - borderWidth: `${v.avatarBorderWidth}px`, |
| 39 | + height: '100%', |
| 40 | + objectFit: 'cover', |
| 41 | + verticalAlign: 'top', |
| 42 | + width: '100%', |
| 43 | + }, |
| 44 | + ], |
| 45 | + ], |
32 | 46 |
|
33 |
| - height: '100%', |
34 |
| - objectFit: 'cover', |
35 |
| - verticalAlign: 'top', |
36 |
| - width: '100%', |
37 |
| - }), |
38 |
| - label: ({ props: { size } }): ICSSInJSStyle => { |
39 |
| - const sizeInRem = pxToRem(sizeToPxValue[size]) |
40 |
| - return { |
41 |
| - display: 'inline-block', |
42 |
| - width: sizeInRem, |
43 |
| - height: sizeInRem, |
44 |
| - lineHeight: sizeInRem, |
45 |
| - fontSize: pxToRem(sizeToPxValue[size] / 2.333), |
46 |
| - verticalAlign: 'top', |
47 |
| - textAlign: 'center', |
48 |
| - padding: '0px', |
49 |
| - } |
50 |
| - }, |
51 |
| - status: ({ variables: v }): ICSSInJSStyle => ({ |
52 |
| - position: 'absolute', |
53 |
| - bottom: 0, |
54 |
| - right: 0, |
55 |
| - boxShadow: `0 0 0 ${pxToRem(v.statusBorderWidth)} ${v.statusBorderColor}`, |
56 |
| - }), |
57 |
| -} |
| 47 | + // |
| 48 | + // Label |
| 49 | + // |
| 50 | + label: [ |
| 51 | + [ |
| 52 | + null, |
| 53 | + { |
| 54 | + display: 'inline-block', |
| 55 | + width: v.medium, |
| 56 | + height: v.medium, |
| 57 | + lineHeight: v.medium, |
| 58 | + fontSize: `calc(${v.medium} / 2.333)`, |
| 59 | + verticalAlign: 'top', |
| 60 | + textAlign: 'center', |
| 61 | + padding: '0px', |
| 62 | + }, |
| 63 | + ], |
| 64 | + [{ size: 'smallest' }, { width: v.smallest, height: v.smallest, lineHeight: v.smallest }], |
| 65 | + [{ size: 'smaller' }, { width: v.smaller, height: v.smaller, lineHeight: v.smaller }], |
| 66 | + [{ size: 'small' }, { width: v.small, height: v.small, lineHeight: v.small }], |
| 67 | + [{ size: 'medium' }, { width: v.medium, height: v.medium, lineHeight: v.medium }], |
| 68 | + [{ size: 'large' }, { width: v.large, height: v.large, lineHeight: v.large }], |
| 69 | + [{ size: 'larger' }, { width: v.larger, height: v.larger, lineHeight: v.larger }], |
| 70 | + [{ size: 'largest' }, { width: v.largest, height: v.largest, lineHeight: v.largest }], |
| 71 | + ], |
58 | 72 |
|
59 |
| -export default avatarStyles |
| 73 | + // |
| 74 | + // Status |
| 75 | + // |
| 76 | + status: [ |
| 77 | + [ |
| 78 | + null, |
| 79 | + { |
| 80 | + position: 'absolute', |
| 81 | + bottom: 0, |
| 82 | + right: 0, |
| 83 | + boxShadow: `0 0 0 ${v.statusBorderWidth} ${v.statusBorderColor}`, |
| 84 | + }, |
| 85 | + ], |
| 86 | + ], |
| 87 | +}) |
| 88 | +export default backportComponentStyle(avatarStyles) |
0 commit comments