Skip to content

Commit 5bfcc1f

Browse files
committed
refactor: move AvatarPair sizing to css
1 parent a2efd35 commit 5bfcc1f

2 files changed

Lines changed: 95 additions & 57 deletions

File tree

src/avatar/avatar-pair.module.css

Lines changed: 94 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
--reactist-avatar-pair-spacing: 12px;
44
--reactist-avatar-pair-mask: 2px;
55
--reactist-avatar-pair-rounded-radius: 5px;
6-
--reactist-avatar-pair-rounded-mask-radius: 7px;
6+
--reactist-avatar-pair-rounded-mask-radius: calc(
7+
var(--reactist-avatar-pair-rounded-radius) + var(--reactist-avatar-pair-mask)
8+
);
79
--reactist-avatar-pair-rounded-mask-start: calc(
810
var(--reactist-avatar-pair-spacing) - var(--reactist-avatar-pair-mask)
911
);
@@ -19,6 +21,97 @@
1921
height: calc(var(--reactist-avatar-pair-size) + var(--reactist-avatar-pair-spacing));
2022
}
2123

24+
.avatarPairSize-80 {
25+
--reactist-avatar-pair-size: 80px;
26+
--reactist-avatar-pair-spacing: 36px;
27+
--reactist-avatar-pair-mask: 3px;
28+
--reactist-avatar-pair-rounded-radius: 10px;
29+
}
30+
31+
.avatarPairSize-72 {
32+
--reactist-avatar-pair-size: 72px;
33+
--reactist-avatar-pair-spacing: 32px;
34+
--reactist-avatar-pair-mask: 3px;
35+
--reactist-avatar-pair-rounded-radius: 10px;
36+
}
37+
38+
.avatarPairSize-62 {
39+
--reactist-avatar-pair-size: 62px;
40+
--reactist-avatar-pair-spacing: 28px;
41+
--reactist-avatar-pair-mask: 3px;
42+
--reactist-avatar-pair-rounded-radius: 8.5px;
43+
}
44+
45+
.avatarPairSize-50 {
46+
--reactist-avatar-pair-size: 50px;
47+
--reactist-avatar-pair-spacing: 22px;
48+
--reactist-avatar-pair-mask: 3px;
49+
--reactist-avatar-pair-rounded-radius: 7px;
50+
}
51+
52+
.avatarPairSize-40 {
53+
--reactist-avatar-pair-size: 40px;
54+
--reactist-avatar-pair-spacing: 18px;
55+
--reactist-avatar-pair-mask: 3px;
56+
--reactist-avatar-pair-rounded-radius: 5.5px;
57+
}
58+
59+
.avatarPairSize-36 {
60+
--reactist-avatar-pair-size: 36px;
61+
--reactist-avatar-pair-spacing: 16px;
62+
--reactist-avatar-pair-mask: 2.5px;
63+
--reactist-avatar-pair-rounded-radius: 5px;
64+
}
65+
66+
.avatarPairSize-30 {
67+
--reactist-avatar-pair-size: 30px;
68+
--reactist-avatar-pair-spacing: 14px;
69+
--reactist-avatar-pair-mask: 2.5px;
70+
--reactist-avatar-pair-rounded-radius: 5px;
71+
}
72+
73+
.avatarPairSize-28 {
74+
--reactist-avatar-pair-size: 28px;
75+
--reactist-avatar-pair-spacing: 12px;
76+
--reactist-avatar-pair-mask: 2px;
77+
--reactist-avatar-pair-rounded-radius: 5px;
78+
}
79+
80+
.avatarPairSize-24 {
81+
--reactist-avatar-pair-size: 24px;
82+
--reactist-avatar-pair-spacing: 12px;
83+
--reactist-avatar-pair-mask: 2px;
84+
--reactist-avatar-pair-rounded-radius: 3.2px;
85+
}
86+
87+
.avatarPairSize-20 {
88+
--reactist-avatar-pair-size: 20px;
89+
--reactist-avatar-pair-spacing: 10px;
90+
--reactist-avatar-pair-mask: 2px;
91+
--reactist-avatar-pair-rounded-radius: 3px;
92+
}
93+
94+
.avatarPairSize-18 {
95+
--reactist-avatar-pair-size: 18px;
96+
--reactist-avatar-pair-spacing: 10px;
97+
--reactist-avatar-pair-mask: 1.5px;
98+
--reactist-avatar-pair-rounded-radius: 3px;
99+
}
100+
101+
.avatarPairSize-16 {
102+
--reactist-avatar-pair-size: 16px;
103+
--reactist-avatar-pair-spacing: 8px;
104+
--reactist-avatar-pair-mask: 1.25px;
105+
--reactist-avatar-pair-rounded-radius: 2px;
106+
}
107+
108+
.avatarPairSize-12 {
109+
--reactist-avatar-pair-size: 12px;
110+
--reactist-avatar-pair-spacing: 6px;
111+
--reactist-avatar-pair-mask: 1px;
112+
--reactist-avatar-pair-rounded-radius: 1.6px;
113+
}
114+
22115
.avatarPair > * {
23116
position: absolute;
24117
}

src/avatar/avatar-pair.tsx

Lines changed: 1 addition & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -5,54 +5,12 @@ import classNames from 'classnames'
55
import { Box } from '../box'
66
import { polymorphicComponent } from '../utils/polymorphism'
77

8-
import { ROUNDED_AVATAR_RADIUS_BY_SIZE } from './utils'
9-
108
import styles from './avatar-pair.module.css'
119

1210
import type { ObfuscatedClassName } from '../utils/common-types'
1311
import type { PolymorphicComponentProps } from '../utils/polymorphism'
1412
import type { AvatarShape, AvatarSize } from './utils'
1513

16-
type AvatarPairStyle = React.CSSProperties & {
17-
'--reactist-avatar-pair-size': string
18-
'--reactist-avatar-pair-spacing': string
19-
'--reactist-avatar-pair-mask': string
20-
'--reactist-avatar-pair-rounded-radius': string
21-
'--reactist-avatar-pair-rounded-mask-radius': string
22-
}
23-
24-
const AVATAR_PAIR_MASK_BY_SIZE: Record<AvatarSize, string> = {
25-
80: '3px',
26-
72: '3px',
27-
62: '3px',
28-
50: '3px',
29-
40: '3px',
30-
36: '2.5px',
31-
30: '2.5px',
32-
28: '2px',
33-
24: '2px',
34-
20: '2px',
35-
18: '1.5px',
36-
16: '1.25px',
37-
12: '1px',
38-
}
39-
40-
const AVATAR_PAIR_SPACING_BY_SIZE: Record<AvatarSize, string> = {
41-
80: '36px',
42-
72: '32px',
43-
62: '28px',
44-
50: '22px',
45-
40: '18px',
46-
36: '16px',
47-
30: '14px',
48-
28: '12px',
49-
24: '12px',
50-
20: '10px',
51-
18: '10px',
52-
16: '8px',
53-
12: '6px',
54-
}
55-
5614
/**
5715
* Props for the `AvatarPair` component.
5816
*/
@@ -121,10 +79,10 @@ const AvatarPair = polymorphicComponent<'div', AvatarPairOwnProps, 'omitClassNam
12179
ref={ref}
12280
className={classNames(
12381
styles.avatarPair,
82+
styles[`avatarPairSize-${size}`],
12483
styles[`avatarPairShape-${shape}`],
12584
exceptionallySetClassName,
12685
)}
127-
style={getAvatarPairStyle(size)}
12886
data-testid={testId}
12987
display="inlineBlock"
13088
position="relative"
@@ -136,18 +94,5 @@ const AvatarPair = polymorphicComponent<'div', AvatarPairOwnProps, 'omitClassNam
13694
},
13795
)
13896

139-
function getAvatarPairStyle(size: AvatarSize): AvatarPairStyle {
140-
const mask = AVATAR_PAIR_MASK_BY_SIZE[size]
141-
const roundedRadius = ROUNDED_AVATAR_RADIUS_BY_SIZE[size]
142-
143-
return {
144-
'--reactist-avatar-pair-size': `${size}px`,
145-
'--reactist-avatar-pair-spacing': AVATAR_PAIR_SPACING_BY_SIZE[size],
146-
'--reactist-avatar-pair-mask': mask,
147-
'--reactist-avatar-pair-rounded-radius': roundedRadius,
148-
'--reactist-avatar-pair-rounded-mask-radius': `calc(${roundedRadius} + ${mask})`,
149-
}
150-
}
151-
15297
export { AvatarPair }
15398
export type { AvatarPairProps }

0 commit comments

Comments
 (0)