@@ -7,41 +7,52 @@ import AvatarBeam from './avatar-beam';
77import AvatarSunset from './avatar-sunset' ;
88import AvatarMarble from './avatar-marble' ;
99
10- const variants = [ 'pixel' , 'bauhaus' , 'ring' , 'beam' , 'sunset' , 'marble' ] ;
11- const deprecatedVariants = { geometric : 'beam' , abstract : 'bauhaus' } ;
12-
13- const Avatar = ( {
14- variant = 'marble' ,
15- colors = [ '#92A1C6' , '#146A7C' , '#F0AB3D' , '#C271B4' , '#C20D90' ] ,
16- name = 'Clara Barton' ,
17- square = false ,
18- title = false ,
19- size = 40 ,
20- ...props
21- } ) => {
22- const avatarProps = { colors, name, title, size, square, ...props } ;
23- const checkedVariant = ( ) => {
24- if ( Object . keys ( deprecatedVariants ) . includes ( variant ) ) {
25- return deprecatedVariants [ variant ] ;
26- }
27- if ( variants . includes ( variant ) ) {
28- return variant ;
29- }
30- return 'marble' ;
31- } ;
32- const avatars = {
33- pixel : < AvatarPixel { ...avatarProps } /> ,
34- bauhaus : < AvatarBauhaus { ...avatarProps } /> ,
35- ring : < AvatarRing { ...avatarProps } /> ,
36- beam : < AvatarBeam { ...avatarProps } /> ,
37- sunset : < AvatarSunset { ...avatarProps } /> ,
38- marble : < AvatarMarble { ...avatarProps } /> ,
39- } ;
40- return avatars [ checkedVariant ( ) ] ;
10+ const AVATAR_VARIANTS = {
11+ pixel : AvatarPixel ,
12+ bauhaus : AvatarBauhaus ,
13+ ring : AvatarRing ,
14+ beam : AvatarBeam ,
15+ sunset : AvatarSunset ,
16+ marble : AvatarMarble ,
17+ } ;
18+
19+ const DEPRECATED_VARIANTS = {
20+ geometric : 'beam' ,
21+ abstract : 'bauhaus' ,
22+ } ;
23+
24+ const Avatar = ( props ) => {
25+ const { variant = 'marble' , colors, name, title, size, square, ...otherProps } = props ;
26+
27+ const resolvedVariant = DEPRECATED_VARIANTS [ variant ] || variant ;
28+ const AvatarComponent = AVATAR_VARIANTS [ resolvedVariant ] || AvatarMarble ;
29+
30+ return (
31+ < AvatarComponent
32+ colors = { colors }
33+ name = { name }
34+ title = { title }
35+ size = { size }
36+ square = { square }
37+ { ...otherProps }
38+ />
39+ ) ;
4140} ;
4241
4342Avatar . propTypes = {
44- variant : PropTypes . oneOf ( variants ) ,
43+ variant : PropTypes . oneOf ( Object . keys ( AVATAR_VARIANTS ) . concat ( Object . keys ( DEPRECATED_VARIANTS ) ) ) ,
44+ colors : PropTypes . arrayOf ( PropTypes . string ) ,
45+ name : PropTypes . string ,
46+ square : PropTypes . bool ,
47+ title : PropTypes . bool ,
48+ } ;
49+
50+ Avatar . defaultProps = {
51+ variant : 'marble' ,
52+ colors : [ '#92A1C6' , '#146A7C' , '#F0AB3D' , '#C271B4' , '#C20D90' ] ,
53+ name : 'Clara Barton' ,
54+ square : false ,
55+ title : false ,
4556} ;
4657
4758export default Avatar ;
0 commit comments