@fluentui-react-native/experimental-avatar 0.14.26 → 0.14.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.json +82 -1
  2. package/CHANGELOG.md +32 -2
  3. package/jest.config.js +2 -0
  4. package/lib/JSAvatar.d.ts.map +1 -1
  5. package/lib/JSAvatar.js +3 -1
  6. package/lib/JSAvatar.js.map +1 -1
  7. package/lib/JSAvatar.styling.d.ts.map +1 -1
  8. package/lib/JSAvatar.styling.js +18 -8
  9. package/lib/JSAvatar.styling.js.map +1 -1
  10. package/lib/JSAvatar.types.d.ts +3 -1
  11. package/lib/JSAvatar.types.d.ts.map +1 -1
  12. package/lib/JSAvatarTokens.d.ts.map +1 -1
  13. package/lib/JSAvatarTokens.js +73 -153
  14. package/lib/JSAvatarTokens.js.map +1 -1
  15. package/lib/JSAvatarTokens.win32.d.ts +5 -0
  16. package/lib/JSAvatarTokens.win32.d.ts.map +1 -0
  17. package/lib/JSAvatarTokens.win32.js +210 -0
  18. package/lib/JSAvatarTokens.win32.js.map +1 -0
  19. package/lib/titles.d.ts +2 -0
  20. package/lib/titles.d.ts.map +1 -0
  21. package/lib/titles.js +109 -0
  22. package/lib/titles.js.map +1 -0
  23. package/lib/useAvatar.d.ts +25 -0
  24. package/lib/useAvatar.d.ts.map +1 -1
  25. package/lib/useAvatar.js +47 -2
  26. package/lib/useAvatar.js.map +1 -1
  27. package/lib/utils/getInitials.d.ts +15 -0
  28. package/lib/utils/getInitials.d.ts.map +1 -0
  29. package/lib/utils/getInitials.js +78 -0
  30. package/lib/utils/getInitials.js.map +1 -0
  31. package/lib/utils/getInitials.test.d.ts +2 -0
  32. package/lib/utils/getInitials.test.d.ts.map +1 -0
  33. package/lib/utils/getInitials.test.js +116 -0
  34. package/lib/utils/getInitials.test.js.map +1 -0
  35. package/lib/utils/index.d.ts +2 -0
  36. package/lib/utils/index.d.ts.map +1 -0
  37. package/lib/utils/index.js +2 -0
  38. package/lib/utils/index.js.map +1 -0
  39. package/lib-commonjs/JSAvatar.d.ts.map +1 -1
  40. package/lib-commonjs/JSAvatar.js +3 -1
  41. package/lib-commonjs/JSAvatar.js.map +1 -1
  42. package/lib-commonjs/JSAvatar.styling.d.ts.map +1 -1
  43. package/lib-commonjs/JSAvatar.styling.js +18 -8
  44. package/lib-commonjs/JSAvatar.styling.js.map +1 -1
  45. package/lib-commonjs/JSAvatar.types.d.ts +3 -1
  46. package/lib-commonjs/JSAvatar.types.d.ts.map +1 -1
  47. package/lib-commonjs/JSAvatarTokens.d.ts.map +1 -1
  48. package/lib-commonjs/JSAvatarTokens.js +73 -153
  49. package/lib-commonjs/JSAvatarTokens.js.map +1 -1
  50. package/lib-commonjs/JSAvatarTokens.win32.d.ts +5 -0
  51. package/lib-commonjs/JSAvatarTokens.win32.d.ts.map +1 -0
  52. package/lib-commonjs/JSAvatarTokens.win32.js +214 -0
  53. package/lib-commonjs/JSAvatarTokens.win32.js.map +1 -0
  54. package/lib-commonjs/titles.d.ts +2 -0
  55. package/lib-commonjs/titles.d.ts.map +1 -0
  56. package/lib-commonjs/titles.js +112 -0
  57. package/lib-commonjs/titles.js.map +1 -0
  58. package/lib-commonjs/useAvatar.d.ts +25 -0
  59. package/lib-commonjs/useAvatar.d.ts.map +1 -1
  60. package/lib-commonjs/useAvatar.js +51 -3
  61. package/lib-commonjs/useAvatar.js.map +1 -1
  62. package/lib-commonjs/utils/getInitials.d.ts +15 -0
  63. package/lib-commonjs/utils/getInitials.d.ts.map +1 -0
  64. package/lib-commonjs/utils/getInitials.js +82 -0
  65. package/lib-commonjs/utils/getInitials.js.map +1 -0
  66. package/lib-commonjs/utils/getInitials.test.d.ts +2 -0
  67. package/lib-commonjs/utils/getInitials.test.d.ts.map +1 -0
  68. package/lib-commonjs/utils/getInitials.test.js +118 -0
  69. package/lib-commonjs/utils/getInitials.test.js.map +1 -0
  70. package/lib-commonjs/utils/index.d.ts +2 -0
  71. package/lib-commonjs/utils/index.d.ts.map +1 -0
  72. package/lib-commonjs/utils/index.js +6 -0
  73. package/lib-commonjs/utils/index.js.map +1 -0
  74. package/package.json +9 -8
  75. package/src/.eslintrc.js +3 -0
  76. package/src/JSAvatar.styling.ts +22 -6
  77. package/src/JSAvatar.tsx +12 -1
  78. package/src/JSAvatar.types.ts +3 -1
  79. package/src/JSAvatarTokens.ts +74 -153
  80. package/src/JSAvatarTokens.win32.ts +213 -0
  81. package/src/__tests__/JSAvatar.test.jsx +156 -0
  82. package/src/__tests__/__snapshots__/JSAvatar.test.jsx.snap +92 -0
  83. package/src/titles.ts +108 -0
  84. package/src/useAvatar.ts +51 -1
  85. package/src/utils/getInitials.test.ts +154 -0
  86. package/src/utils/getInitials.ts +92 -0
  87. package/src/utils/index.ts +1 -0
  88. package/tsconfig.json +2 -1
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var getInitials_1 = require("./getInitials");
4
+ describe('getInitials', function () {
5
+ it('handles null inputs', function () {
6
+ var result = (0, getInitials_1.getInitials)(null, false);
7
+ expect(result).toEqual('');
8
+ result = (0, getInitials_1.getInitials)(undefined, false);
9
+ expect(result).toEqual('');
10
+ });
11
+ it('calculates an expected initials in LTR', function () {
12
+ var result = (0, getInitials_1.getInitials)('Kat Larrson', false);
13
+ expect(result).toEqual('KL');
14
+ });
15
+ it('calculates an expected initials in LTR for non-ASCII characters', function () {
16
+ var result = (0, getInitials_1.getInitials)('Írissa Þórðardóttir', false);
17
+ expect(result).toEqual('ÍÞ');
18
+ result = (0, getInitials_1.getInitials)('Øyvind Åsen', false);
19
+ expect(result).toEqual('ØÅ');
20
+ });
21
+ it('calculates an expected initials in LTR with a hypen', function () {
22
+ var result = (0, getInitials_1.getInitials)('David Zearing-Goff', false);
23
+ expect(result).toEqual('DZ');
24
+ });
25
+ it('calculates an expected initials in LTR with numbers', function () {
26
+ var result = (0, getInitials_1.getInitials)('4lex 5loo', false);
27
+ expect(result).toEqual('45');
28
+ });
29
+ it('calculates an expected initials in LTR with parentheses', function () {
30
+ var result = (0, getInitials_1.getInitials)('David (The man) Goff', false);
31
+ expect(result).toEqual('DG');
32
+ });
33
+ it('calculates an expected initials in LTR with brackets', function () {
34
+ var result = (0, getInitials_1.getInitials)('David Goff [The man]', false);
35
+ expect(result).toEqual('DG');
36
+ });
37
+ it('calculates an expected initials in LTR with curly braces', function () {
38
+ var result = (0, getInitials_1.getInitials)('David {The man} Goff', false);
39
+ expect(result).toEqual('DG');
40
+ });
41
+ it('calculates an expected initials in LTR with multiple parentheses, extra spaces, and unwanted characters', function () {
42
+ var result = (0, getInitials_1.getInitials)(' !@#$%^&*()=+ (Alpha) David (The man) `~<>,./?[]{}| Goff (Gamma) ', false);
43
+ expect(result).toEqual('DG');
44
+ });
45
+ it('calculates an expected initials in LTR with multiple types of unwanted text', function () {
46
+ var result = (0, getInitials_1.getInitials)(' !@#$%^&*()=+ (Alpha) David (The man) `~<>,./?[]{}| Goff (Gamma) [Beta] ', false);
47
+ expect(result).toEqual('DG');
48
+ });
49
+ it('calculates an expected initials in RTL if one was not specified', function () {
50
+ var result = (0, getInitials_1.getInitials)('Kat Larrson', true);
51
+ expect(result).toEqual('LK');
52
+ });
53
+ it('calculates an expected initials in LTR for names with multiple components', function () {
54
+ var result = (0, getInitials_1.getInitials)('A', false);
55
+ expect(result).toEqual('A');
56
+ result = (0, getInitials_1.getInitials)('A B', false);
57
+ expect(result).toEqual('AB');
58
+ result = (0, getInitials_1.getInitials)('A B C', false);
59
+ expect(result).toEqual('AC');
60
+ result = (0, getInitials_1.getInitials)('A B C D', false);
61
+ expect(result).toEqual('A');
62
+ });
63
+ it('calculates an expected initials for Arabic names', function () {
64
+ var result = (0, getInitials_1.getInitials)('خسرو رحیمی', true);
65
+ expect(result).toEqual('');
66
+ });
67
+ it('calculates an expected initials for Chinese names', function () {
68
+ var result = (0, getInitials_1.getInitials)('桂英', false);
69
+ expect(result).toEqual('');
70
+ result = (0, getInitials_1.getInitials)('佳', false);
71
+ expect(result).toEqual('');
72
+ result = (0, getInitials_1.getInitials)('宋智洋', false);
73
+ expect(result).toEqual('');
74
+ });
75
+ it('calculates an expected initials for Korean names', function () {
76
+ var result = (0, getInitials_1.getInitials)('강현', false);
77
+ expect(result).toEqual('');
78
+ result = (0, getInitials_1.getInitials)('최종래', false);
79
+ expect(result).toEqual('');
80
+ result = (0, getInitials_1.getInitials)('남궁 성종', false);
81
+ expect(result).toEqual('');
82
+ });
83
+ it('calculates an expected initials for Japanese names', function () {
84
+ var result = (0, getInitials_1.getInitials)('松田', false);
85
+ expect(result).toEqual('');
86
+ result = (0, getInitials_1.getInitials)('海野', false);
87
+ expect(result).toEqual('');
88
+ result = (0, getInitials_1.getInitials)('かり', false);
89
+ expect(result).toEqual('');
90
+ });
91
+ it('calculates expected initials for phone numbers', function () {
92
+ var result = (0, getInitials_1.getInitials)('12345678', false);
93
+ expect(result).toEqual('');
94
+ result = (0, getInitials_1.getInitials)('+1 (555) 123-4567 ext.4567', false);
95
+ expect(result).toEqual('');
96
+ result = (0, getInitials_1.getInitials)('+47 12 34 56 78 (X 5678)', false);
97
+ expect(result).toEqual('');
98
+ result = (0, getInitials_1.getInitials)('+47 12 34 56 78 (X 5678)', false, true);
99
+ expect(result).toEqual('4');
100
+ result = (0, getInitials_1.getInitials)('47 12 34', false, true);
101
+ expect(result).toEqual('43');
102
+ result = (0, getInitials_1.getInitials)('47 12', false, true);
103
+ expect(result).toEqual('41');
104
+ result = (0, getInitials_1.getInitials)('1 Ext 2', false);
105
+ expect(result).toEqual('');
106
+ result = (0, getInitials_1.getInitials)('James Ext 2', false);
107
+ expect(result).toEqual('J2');
108
+ result = (0, getInitials_1.getInitials)('1x1', false);
109
+ expect(result).toEqual('');
110
+ result = (0, getInitials_1.getInitials)('1y1', false);
111
+ expect(result).toEqual('1');
112
+ result = (0, getInitials_1.getInitials)('1', false);
113
+ expect(result).toEqual('1');
114
+ result = (0, getInitials_1.getInitials)('A 2', false);
115
+ expect(result).toEqual('A2');
116
+ });
117
+ });
118
+ //# sourceMappingURL=getInitials.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getInitials.test.js","sourceRoot":"","sources":["../../src/utils/getInitials.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { getInitials } from './getInitials';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getInitials = void 0;
4
+ var getInitials_1 = require("./getInitials");
5
+ Object.defineProperty(exports, "getInitials", { enumerable: true, get: function () { return getInitials_1.getInitials; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAAnC,0GAAA,WAAW,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-react-native/experimental-avatar",
3
- "version": "0.14.26",
3
+ "version": "0.14.29",
4
4
  "description": "A cross-platform Avatar component using the Fluent Design System. Currently only implemented on iOS",
5
5
  "license": "MIT",
6
6
  "author": "Microsoft <fluentuinativeowners@microsoft.com>",
@@ -26,14 +26,15 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "@fluentui-react-native/adapters": "^0.8.5",
29
- "@fluentui-react-native/badge": "^0.0.33",
29
+ "@fluentui-react-native/badge": "^0.0.35",
30
30
  "@fluentui-react-native/component-cache": "^1.3.2",
31
- "@fluentui-react-native/icon": "^0.11.21",
32
- "@fluentui-react-native/interactive-hooks": "^0.15.6",
33
- "@fluentui-react-native/framework": "0.7.26",
34
- "@fluentui-react-native/theme-tokens": "^0.16.2",
35
- "@fluentui-react-native/tokens": "^0.12.0",
36
- "@fluentui-react-native/use-styling": "^0.8.3"
31
+ "@fluentui-react-native/framework": "0.7.27",
32
+ "@fluentui-react-native/icon": "^0.11.22",
33
+ "@fluentui-react-native/interactive-hooks": "^0.15.7",
34
+ "@fluentui-react-native/theme-tokens": "^0.16.3",
35
+ "@fluentui-react-native/tokens": "^0.12.1",
36
+ "@fluentui-react-native/use-styling": "^0.8.3",
37
+ "react-native-svg": "^12.3.0"
37
38
  },
38
39
  "devDependencies": {
39
40
  "@fluentui-react-native/eslint-config-rules": "^0.1.1",
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ extends: ['@fluentui-react-native/eslint-config-rules'],
3
+ };
@@ -11,7 +11,16 @@ const nameMap: { [key: string]: string } = {
11
11
  end: 'flex-end',
12
12
  };
13
13
 
14
- export const avatarStates: (keyof JSAvatarTokens)[] = [...AvatarColors, ...AvatarSizesForTokens, 'circular', 'square', 'inactive'];
14
+ export const avatarStates: (keyof JSAvatarTokens)[] = [
15
+ ...AvatarColors,
16
+ ...AvatarSizesForTokens,
17
+ 'circular',
18
+ 'square',
19
+ 'inactive',
20
+ 'ringColor',
21
+ 'ringBackgroundColor',
22
+ 'iconColor',
23
+ ];
15
24
 
16
25
  export const stylingSettings: UseStylingOptions<JSAvatarProps, AvatarSlotProps, JSAvatarTokens> = {
17
26
  tokens: [defaultJSAvatarTokens, JSAvatarName],
@@ -41,6 +50,7 @@ export const stylingSettings: UseStylingOptions<JSAvatarProps, AvatarSlotProps,
41
50
  style: {
42
51
  ...fontStyles.from(tokens, theme),
43
52
  color: tokens.color,
53
+ textAlign: 'center',
44
54
  },
45
55
  };
46
56
  },
@@ -60,10 +70,12 @@ export const stylingSettings: UseStylingOptions<JSAvatarProps, AvatarSlotProps,
60
70
  justifyContent: 'center',
61
71
  alignItems: 'center',
62
72
  backgroundColor: backgroundColor,
73
+ borderWidth: tokens.borderWidth,
74
+ borderColor: tokens.borderColor,
63
75
  },
64
76
  };
65
77
  },
66
- ['backgroundColor', 'width', 'height', ...borderStyles.keys],
78
+ ['backgroundColor', 'width', 'height', 'borderColor', 'borderWidth', ...borderStyles.keys],
67
79
  ),
68
80
  image: buildProps(
69
81
  (tokens: JSAvatarTokens) => {
@@ -72,22 +84,25 @@ export const stylingSettings: UseStylingOptions<JSAvatarProps, AvatarSlotProps,
72
84
  borderRadius: tokens.borderRadius,
73
85
  width: tokens.width,
74
86
  height: tokens.height,
87
+ borderWidth: tokens.borderWidth,
88
+ borderColor: tokens.borderColor,
75
89
  },
76
90
  };
77
91
  },
78
- ['borderRadius', 'width', 'height'],
92
+ ['borderRadius', 'width', 'height', 'borderColor', 'borderWidth'],
79
93
  ),
80
94
  icon: buildProps(
81
95
  (tokens: JSAvatarTokens) => {
82
96
  return {
83
97
  style: {
84
98
  position: 'absolute',
99
+ color: tokens.iconColor,
85
100
  width: tokens.iconSize,
86
101
  height: tokens.iconSize,
87
102
  },
88
103
  };
89
104
  },
90
- ['iconSize'],
105
+ ['iconSize', 'iconColor'],
91
106
  ),
92
107
  ring: buildProps(
93
108
  (tokens: JSAvatarTokens, theme: Theme) => {
@@ -95,17 +110,18 @@ export const stylingSettings: UseStylingOptions<JSAvatarProps, AvatarSlotProps,
95
110
  return {
96
111
  style: {
97
112
  borderStyle: 'solid',
98
- borderWidth: ringConfig.stroke,
99
113
  width: ringConfig.size,
100
114
  height: ringConfig.size,
101
115
  position: 'absolute',
102
116
  top: -ringConfig.stroke * 2,
103
117
  left: -ringConfig.stroke * 2,
104
118
  ...borderStyles.from(tokens, theme),
119
+ borderWidth: ringConfig.stroke,
120
+ borderColor: tokens.ringColor,
105
121
  },
106
122
  };
107
123
  },
108
- ['width', 'height', ...borderStyles.keys],
124
+ ['width', 'height', 'ringColor', ...borderStyles.keys],
109
125
  ),
110
126
  badge: buildProps(
111
127
  (tokens: JSAvatarTokens) => {
package/src/JSAvatar.tsx CHANGED
@@ -7,6 +7,7 @@ import { useAvatar } from './useAvatar';
7
7
  import { PresenceBadge } from '@fluentui-react-native/badge';
8
8
  import { Icon } from '@fluentui-react-native/icon';
9
9
  import { createIconProps } from '@fluentui-react-native/interactive-hooks';
10
+ import { SvgXml } from 'react-native-svg';
10
11
 
11
12
  /**
12
13
  * A function which determines if a set of styles should be applied to the compoent given the current state and props of the avatar.
@@ -52,6 +53,10 @@ export const JSAvatar = compose<JSAvatarType>({
52
53
  const { activeAppearance, icon, initials, image, badge, ...mergedProps } = mergeProps(avatar.props, final);
53
54
  const { showRing, transparentRing, showBadge } = avatar.state;
54
55
  const svgIconsEnabled = ['ios', 'macos', 'win32', 'android'].includes(Platform.OS as string);
56
+ const fallBackIconXml = `<svg width="14" height="16" viewBox="0 0 14 16" fill="none" xmlns="http://www.w3.org/2000/svg">
57
+ <path d="M7 0C4.79086 0 3 1.79086 3 4C3 6.20914 4.79086 8 7 8C9.20914 8 11 6.20914 11 4C11 1.79086 9.20914 0 7 0ZM4 4C4 2.34315 5.34315 1 7 1C8.65685 1 10 2.34315 10 4C10 5.65685 8.65685 7 7 7C5.34315 7 4 5.65685 4 4ZM2.00873 9C0.903151 9 0 9.88687 0 11C0 12.6912 0.83281 13.9663 2.13499 14.7966C3.41697 15.614 5.14526 16 7 16C8.85474 16 10.583 15.614 11.865 14.7966C13.1672 13.9663 14 12.6912 14 11C14 9.89557 13.1045 9.00001 12 9.00001L2.00873 9ZM1 11C1 10.4467 1.44786 10 2.00873 10L12 10C12.5522 10 13 10.4478 13 11C13 12.3088 12.3777 13.2837 11.3274 13.9534C10.2568 14.636 8.73511 15 7 15C5.26489 15 3.74318 14.636 2.67262 13.9534C1.62226 13.2837 1 12.3088 1 11Z" fill="currentColor"/>
58
+ </svg>
59
+ `;
55
60
 
56
61
  return (
57
62
  <Slots.root {...mergedProps}>
@@ -59,7 +64,13 @@ export const JSAvatar = compose<JSAvatarType>({
59
64
  <Slots.image {...image} />
60
65
  ) : (
61
66
  <Slots.initialsBackground>
62
- {initials ? <Slots.initials>{initials}</Slots.initials> : userProps.icon && <Slots.icon {...iconProps} />}
67
+ {initials ? (
68
+ <Slots.initials>{initials}</Slots.initials>
69
+ ) : userProps.icon ? (
70
+ <Slots.icon {...iconProps} />
71
+ ) : (
72
+ <SvgXml xml={fallBackIconXml} />
73
+ )}
63
74
  </Slots.initialsBackground>
64
75
  )}
65
76
  {showRing && !transparentRing && <Slots.ring />}
@@ -69,7 +69,6 @@ export type IconAlignment = 'start' | 'center' | 'end';
69
69
  export interface RingConfig {
70
70
  accent?: boolean;
71
71
  transparent?: boolean;
72
- ringBackgroundColor?: ColorValue; // inner/outer rings
73
72
  ringThickness?: number;
74
73
  innerGap?: number;
75
74
  }
@@ -159,11 +158,14 @@ export interface JSAvatarProps extends IViewProps, AvatarConfigurableProps {
159
158
  }
160
159
 
161
160
  export interface JSAvatarTokens extends IBackgroundColorTokens, IForegroundColorTokens, AvatarConfigurableProps, IBorderTokens, FontTokens {
161
+ iconColor?: ColorValue;
162
162
  iconSize?: number;
163
163
  height?: number;
164
164
  horizontalIconAlignment?: IconAlignment;
165
165
  verticalIconAlignment?: IconAlignment;
166
166
  circular?: JSAvatarTokens;
167
+ ringColor?: ColorValue;
168
+ ringBackgroundColor?: ColorValue;
167
169
  square?: JSAvatarTokens;
168
170
  inactive?: JSAvatarTokens;
169
171
  avatarOpacity?: number;
@@ -15,6 +15,11 @@ export const defaultJSAvatarTokens: TokenSettings<JSAvatarTokens, Theme> = (t: T
15
15
  fontSize: globalTokens.font.size[200],
16
16
  width: 24,
17
17
  height: 24,
18
+ iconSize: 16,
19
+ iconColor: globalTokens.color.white,
20
+ ringColor: t.colors.transparentStroke,
21
+ borderColor: globalTokens.color.white,
22
+ borderWidth: t.host.appearance === 'highContrast' ? 1 : 0,
18
23
  circular: {
19
24
  borderRadius: globalTokens.corner.radius.circle,
20
25
  },
@@ -132,161 +137,77 @@ export const defaultJSAvatarTokens: TokenSettings<JSAvatarTokens, Theme> = (t: T
132
137
  neutral: {
133
138
  backgroundColor: t.colors.neutralBackground6,
134
139
  color: t.colors.neutralForeground3,
135
- borderColor: t.colors.defaultBorder,
140
+ iconColor: t.colors.neutralForeground3,
141
+ ringColor: t.colors.transparentStroke,
136
142
  },
137
143
  brand: {
138
144
  backgroundColor: t.colors.brandBackgroundStatic,
139
145
  color: t.colors.neutralForegroundOnBrand,
140
- borderColor: t.colors.brandedBorder,
141
- },
142
- darkRed: {
143
- backgroundColor: globalTokens.color.darkRed.tint40,
144
- color: globalTokens.color.darkRed.shade30,
145
- borderColor: globalTokens.color.darkRed.primary,
146
- },
147
- cranberry: {
148
- backgroundColor: globalTokens.color.cranberry.tint40,
149
- color: globalTokens.color.cranberry.shade30,
150
- borderColor: globalTokens.color.cranberry.primary,
151
- },
152
- red: {
153
- backgroundColor: globalTokens.color.red.tint40,
154
- color: globalTokens.color.red.shade30,
155
- borderColor: globalTokens.color.red.primary,
156
- },
157
- pumpkin: {
158
- backgroundColor: globalTokens.color.pumpkin.tint40,
159
- color: globalTokens.color.pumpkin.shade30,
160
- borderColor: globalTokens.color.pumpkin.primary,
161
- },
162
- peach: {
163
- backgroundColor: globalTokens.color.peach.tint40,
164
- color: globalTokens.color.peach.shade30,
165
- borderColor: globalTokens.color.peach.primary,
166
- },
167
- marigold: {
168
- backgroundColor: globalTokens.color.marigold.tint40,
169
- color: globalTokens.color.marigold.shade30,
170
- borderColor: globalTokens.color.marigold.primary,
171
- },
172
- gold: {
173
- backgroundColor: globalTokens.color.gold.tint40,
174
- color: globalTokens.color.gold.shade30,
175
- borderColor: globalTokens.color.gold.primary,
176
- },
177
- brass: {
178
- backgroundColor: globalTokens.color.brass.tint40,
179
- color: globalTokens.color.brass.shade30,
180
- borderColor: globalTokens.color.brass.primary,
181
- },
182
- brown: {
183
- backgroundColor: globalTokens.color.brown.tint40,
184
- color: globalTokens.color.brown.shade30,
185
- borderColor: globalTokens.color.brown.primary,
186
- },
187
- forest: {
188
- backgroundColor: globalTokens.color.forest.tint40,
189
- color: globalTokens.color.forest.shade30,
190
- borderColor: globalTokens.color.forest.primary,
191
- },
192
- seafoam: {
193
- backgroundColor: globalTokens.color.seafoam.tint40,
194
- color: globalTokens.color.seafoam.shade30,
195
- borderColor: globalTokens.color.seafoam.primary,
196
- },
197
- darkGreen: {
198
- backgroundColor: globalTokens.color.darkGreen.tint40,
199
- color: globalTokens.color.darkGreen.shade30,
200
- borderColor: globalTokens.color.darkGreen.primary,
201
- },
202
- lightTeal: {
203
- backgroundColor: globalTokens.color.lightTeal.tint40,
204
- color: globalTokens.color.lightTeal.shade30,
205
- borderColor: globalTokens.color.lightTeal.primary,
206
- },
207
- teal: {
208
- backgroundColor: globalTokens.color.teal.tint40,
209
- color: globalTokens.color.teal.shade30,
210
- borderColor: globalTokens.color.teal.primary,
211
- },
212
- steel: {
213
- backgroundColor: globalTokens.color.steel.tint40,
214
- color: globalTokens.color.steel.shade30,
215
- borderColor: globalTokens.color.steel.primary,
216
- },
217
- blue: {
218
- backgroundColor: globalTokens.color.blue.tint40,
219
- color: globalTokens.color.blue.shade30,
220
- borderColor: globalTokens.color.blue.primary,
221
- },
222
- royalBlue: {
223
- backgroundColor: globalTokens.color.royalBlue.tint40,
224
- color: globalTokens.color.royalBlue.shade30,
225
- borderColor: globalTokens.color.royalBlue.primary,
226
- },
227
- cornflower: {
228
- backgroundColor: globalTokens.color.cornflower.tint40,
229
- color: globalTokens.color.cornflower.shade30,
230
- borderColor: globalTokens.color.cornflower.primary,
231
- },
232
- navy: {
233
- backgroundColor: globalTokens.color.navy.tint40,
234
- color: globalTokens.color.navy.shade30,
235
- borderColor: globalTokens.color.navy.primary,
236
- },
237
- lavender: {
238
- backgroundColor: globalTokens.color.lavender.tint40,
239
- color: globalTokens.color.lavender.shade30,
240
- borderColor: globalTokens.color.lavender.primary,
241
- },
242
- purple: {
243
- backgroundColor: globalTokens.color.purple.tint40,
244
- color: globalTokens.color.purple.shade30,
245
- borderColor: globalTokens.color.purple.primary,
246
- },
247
- grape: {
248
- backgroundColor: globalTokens.color.grape.tint40,
249
- color: globalTokens.color.grape.shade30,
250
- borderColor: globalTokens.color.grape.primary,
251
- },
252
- lilac: {
253
- backgroundColor: globalTokens.color.lilac.tint40,
254
- color: globalTokens.color.lilac.shade30,
255
- borderColor: globalTokens.color.lilac.primary,
256
- },
257
- pink: {
258
- backgroundColor: globalTokens.color.pink.tint40,
259
- color: globalTokens.color.pink.shade30,
260
- borderColor: globalTokens.color.pink.primary,
261
- },
262
- magenta: {
263
- backgroundColor: globalTokens.color.magenta.tint40,
264
- color: globalTokens.color.magenta.shade30,
265
- borderColor: globalTokens.color.magenta.primary,
266
- },
267
- plum: {
268
- backgroundColor: globalTokens.color.plum.tint40,
269
- color: globalTokens.color.plum.shade30,
270
- borderColor: globalTokens.color.plum.primary,
271
- },
272
- beige: {
273
- backgroundColor: globalTokens.color.beige.tint40,
274
- color: globalTokens.color.beige.shade30,
275
- borderColor: globalTokens.color.beige.primary,
276
- },
277
- mink: {
278
- backgroundColor: globalTokens.color.mink.tint40,
279
- color: globalTokens.color.mink.shade30,
280
- borderColor: globalTokens.color.mink.primary,
281
- },
282
- platinum: {
283
- backgroundColor: globalTokens.color.platinum.tint40,
284
- color: globalTokens.color.platinum.shade30,
285
- borderColor: globalTokens.color.platinum.primary,
286
- },
287
- anchor: {
288
- backgroundColor: globalTokens.color.anchor.tint40,
289
- color: globalTokens.color.anchor.shade30,
290
- borderColor: globalTokens.color.anchor.primary,
291
- },
146
+ iconColor: t.colors.neutralForegroundOnBrand,
147
+ ringColor: t.colors.transparentStroke,
148
+ },
149
+ darkRed: getColorProps('darkRed', t),
150
+ cranberry: getColorProps('cranberry', t),
151
+ red: getColorProps('red', t),
152
+ pumpkin: getColorProps('pumpkin', t),
153
+ peach: getColorProps('peach', t),
154
+ marigold: getColorProps('marigold', t),
155
+ gold: getColorProps('gold', t),
156
+ brass: getColorProps('brass', t),
157
+ brown: getColorProps('brown', t),
158
+ forest: getColorProps('forest', t),
159
+ seafoam: getColorProps('seafoam', t),
160
+ darkGreen: getColorProps('darkGreen', t),
161
+ lightTeal: getColorProps('lightTeal', t),
162
+ teal: getColorProps('teal', t),
163
+ steel: getColorProps('steel', t),
164
+ blue: getColorProps('blue', t),
165
+ royalBlue: getColorProps('royalBlue', t),
166
+ cornflower: getColorProps('cornflower', t),
167
+ navy: getColorProps('navy', t),
168
+ lavender: getColorProps('lavender', t),
169
+ purple: getColorProps('purple', t),
170
+ grape: getColorProps('grape', t),
171
+ lilac: getColorProps('lilac', t),
172
+ pink: getColorProps('pink', t),
173
+ magenta: getColorProps('magenta', t),
174
+ plum: getColorProps('plum', t),
175
+ beige: getColorProps('beige', t),
176
+ mink: getColorProps('mink', t),
177
+ platinum: getColorProps('platinum', t),
178
+ anchor: getColorProps('anchor', t),
292
179
  } as JSAvatarTokens);
180
+
181
+ /**
182
+ * A function which returns object of props depending on color and theme.
183
+ * @param color
184
+ * @param theme
185
+ * @returns object of props - backgroundColor, color and ringColor
186
+ */
187
+ function getColorProps(color: string, theme: Theme) {
188
+ const themeAppearance = theme.host.appearance;
189
+ switch (themeAppearance) {
190
+ case 'light':
191
+ default:
192
+ return {
193
+ backgroundColor: globalTokens.color[color].tint40,
194
+ color: globalTokens.color[color].shade30,
195
+ iconColor: globalTokens.color[color].shade30,
196
+ ringColor: globalTokens.color[color].primary,
197
+ };
198
+ case 'dark':
199
+ return {
200
+ backgroundColor: globalTokens.color[color].shade30,
201
+ color: globalTokens.color[color].tint40,
202
+ iconColor: globalTokens.color[color].tint40,
203
+ ringColor: globalTokens.color[color].tint30,
204
+ };
205
+ case 'highContrast':
206
+ return {
207
+ backgroundColor: theme.colors.neutralBackground6,
208
+ color: theme.colors.neutralForeground3,
209
+ iconColor: theme.colors.neutralForeground3,
210
+ ringColor: theme.colors.transparentStroke,
211
+ };
212
+ }
213
+ }