@fluentui-react-native/experimental-avatar 0.13.0 → 0.13.4

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 (117) hide show
  1. package/CHANGELOG.json +106 -1
  2. package/CHANGELOG.md +39 -2
  3. package/lib/Avatar.d.ts +69 -2
  4. package/lib/Avatar.d.ts.map +1 -1
  5. package/lib/Avatar.js +32 -38
  6. package/lib/Avatar.js.map +1 -1
  7. package/lib/JSAvatar.d.ts +12 -0
  8. package/lib/JSAvatar.d.ts.map +1 -0
  9. package/lib/{Avatar.helpers.d.ts → JSAvatar.helpers.d.ts} +3 -3
  10. package/lib/JSAvatar.helpers.d.ts.map +1 -0
  11. package/lib/{Avatar.helpers.js → JSAvatar.helpers.js} +1 -1
  12. package/lib/JSAvatar.helpers.js.map +1 -0
  13. package/lib/JSAvatar.js +62 -0
  14. package/lib/JSAvatar.js.map +1 -0
  15. package/lib/JSAvatar.styling.d.ts +5 -0
  16. package/lib/JSAvatar.styling.d.ts.map +1 -0
  17. package/lib/{Avatar.styling.js → JSAvatar.styling.js} +35 -43
  18. package/lib/JSAvatar.styling.js.map +1 -0
  19. package/{lib-commonjs/Avatar.types.d.ts → lib/JSAvatar.types.d.ts} +20 -12
  20. package/lib/JSAvatar.types.d.ts.map +1 -0
  21. package/lib/JSAvatar.types.js +2 -0
  22. package/lib/JSAvatar.types.js.map +1 -0
  23. package/lib/JSAvatarTokens.d.ts +5 -0
  24. package/lib/JSAvatarTokens.d.ts.map +1 -0
  25. package/lib/JSAvatarTokens.js +18 -0
  26. package/lib/JSAvatarTokens.js.map +1 -0
  27. package/lib/index.d.ts +2 -1
  28. package/lib/index.d.ts.map +1 -1
  29. package/lib/index.js +2 -1
  30. package/lib/index.js.map +1 -1
  31. package/lib/useAvatar.d.ts +2 -2
  32. package/lib/useAvatar.d.ts.map +1 -1
  33. package/lib/useAvatar.js +3 -3
  34. package/lib/useAvatar.js.map +1 -1
  35. package/lib-commonjs/Avatar.d.ts +69 -2
  36. package/lib-commonjs/Avatar.d.ts.map +1 -1
  37. package/lib-commonjs/Avatar.js +31 -37
  38. package/lib-commonjs/Avatar.js.map +1 -1
  39. package/lib-commonjs/JSAvatar.d.ts +12 -0
  40. package/lib-commonjs/JSAvatar.d.ts.map +1 -0
  41. package/lib-commonjs/{Avatar.helpers.d.ts → JSAvatar.helpers.d.ts} +3 -3
  42. package/lib-commonjs/JSAvatar.helpers.d.ts.map +1 -0
  43. package/lib-commonjs/{Avatar.helpers.js → JSAvatar.helpers.js} +1 -1
  44. package/lib-commonjs/JSAvatar.helpers.js.map +1 -0
  45. package/lib-commonjs/JSAvatar.js +64 -0
  46. package/lib-commonjs/JSAvatar.js.map +1 -0
  47. package/lib-commonjs/JSAvatar.styling.d.ts +5 -0
  48. package/lib-commonjs/JSAvatar.styling.d.ts.map +1 -0
  49. package/lib-commonjs/JSAvatar.styling.js +125 -0
  50. package/lib-commonjs/JSAvatar.styling.js.map +1 -0
  51. package/{lib/Avatar.types.d.ts → lib-commonjs/JSAvatar.types.d.ts} +20 -12
  52. package/lib-commonjs/JSAvatar.types.d.ts.map +1 -0
  53. package/lib-commonjs/{Avatar.types.js → JSAvatar.types.js} +2 -2
  54. package/lib-commonjs/JSAvatar.types.js.map +1 -0
  55. package/lib-commonjs/JSAvatarTokens.d.ts +5 -0
  56. package/lib-commonjs/JSAvatarTokens.d.ts.map +1 -0
  57. package/lib-commonjs/JSAvatarTokens.js +20 -0
  58. package/lib-commonjs/JSAvatarTokens.js.map +1 -0
  59. package/lib-commonjs/index.d.ts +2 -1
  60. package/lib-commonjs/index.d.ts.map +1 -1
  61. package/lib-commonjs/index.js +2 -1
  62. package/lib-commonjs/index.js.map +1 -1
  63. package/lib-commonjs/useAvatar.d.ts +2 -2
  64. package/lib-commonjs/useAvatar.d.ts.map +1 -1
  65. package/lib-commonjs/useAvatar.js +4 -4
  66. package/lib-commonjs/useAvatar.js.map +1 -1
  67. package/package.json +5 -5
  68. package/src/Avatar.tsx +127 -37
  69. package/src/{Avatar.helpers.ts → JSAvatar.helpers.ts} +2 -2
  70. package/src/{Avatar.styling.ts → JSAvatar.styling.ts} +24 -20
  71. package/src/JSAvatar.tsx +56 -0
  72. package/src/{Avatar.types.ts → JSAvatar.types.ts} +20 -11
  73. package/src/{AvatarTokens.ts → JSAvatarTokens.ts} +11 -4
  74. package/src/index.ts +2 -1
  75. package/src/useAvatar.ts +6 -5
  76. package/lib/Avatar.helpers.d.ts.map +0 -1
  77. package/lib/Avatar.helpers.js.map +0 -1
  78. package/lib/Avatar.ios.d.ts +0 -70
  79. package/lib/Avatar.ios.d.ts.map +0 -1
  80. package/lib/Avatar.ios.js +0 -45
  81. package/lib/Avatar.ios.js.map +0 -1
  82. package/lib/Avatar.macos.d.ts +0 -70
  83. package/lib/Avatar.macos.d.ts.map +0 -1
  84. package/lib/Avatar.macos.js +0 -45
  85. package/lib/Avatar.macos.js.map +0 -1
  86. package/lib/Avatar.styling.d.ts +0 -4
  87. package/lib/Avatar.styling.d.ts.map +0 -1
  88. package/lib/Avatar.styling.js.map +0 -1
  89. package/lib/Avatar.types.d.ts.map +0 -1
  90. package/lib/Avatar.types.js +0 -2
  91. package/lib/Avatar.types.js.map +0 -1
  92. package/lib/AvatarTokens.d.ts +0 -5
  93. package/lib/AvatarTokens.d.ts.map +0 -1
  94. package/lib/AvatarTokens.js +0 -11
  95. package/lib/AvatarTokens.js.map +0 -1
  96. package/lib-commonjs/Avatar.helpers.d.ts.map +0 -1
  97. package/lib-commonjs/Avatar.helpers.js.map +0 -1
  98. package/lib-commonjs/Avatar.ios.d.ts +0 -70
  99. package/lib-commonjs/Avatar.ios.d.ts.map +0 -1
  100. package/lib-commonjs/Avatar.ios.js +0 -47
  101. package/lib-commonjs/Avatar.ios.js.map +0 -1
  102. package/lib-commonjs/Avatar.macos.d.ts +0 -70
  103. package/lib-commonjs/Avatar.macos.d.ts.map +0 -1
  104. package/lib-commonjs/Avatar.macos.js +0 -47
  105. package/lib-commonjs/Avatar.macos.js.map +0 -1
  106. package/lib-commonjs/Avatar.styling.d.ts +0 -4
  107. package/lib-commonjs/Avatar.styling.d.ts.map +0 -1
  108. package/lib-commonjs/Avatar.styling.js +0 -133
  109. package/lib-commonjs/Avatar.styling.js.map +0 -1
  110. package/lib-commonjs/Avatar.types.d.ts.map +0 -1
  111. package/lib-commonjs/Avatar.types.js.map +0 -1
  112. package/lib-commonjs/AvatarTokens.d.ts +0 -5
  113. package/lib-commonjs/AvatarTokens.d.ts.map +0 -1
  114. package/lib-commonjs/AvatarTokens.js +0 -13
  115. package/lib-commonjs/AvatarTokens.js.map +0 -1
  116. package/src/Avatar.ios.tsx +0 -134
  117. package/src/Avatar.macos.tsx +0 -134
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArrays = (this && this.__spreadArrays) || function () {
14
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
15
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
16
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
17
+ r[k] = a[j];
18
+ return r;
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ var JSAvatar_types_1 = require("./JSAvatar.types");
22
+ var framework_1 = require("@fluentui-react-native/framework");
23
+ var JSAvatarTokens_1 = require("./JSAvatarTokens");
24
+ var JSAvatar_helpers_1 = require("./JSAvatar.helpers");
25
+ var tokens_1 = require("@fluentui-react-native/tokens");
26
+ var nameMap = {
27
+ start: 'flex-start',
28
+ center: 'center',
29
+ end: 'flex-end',
30
+ };
31
+ exports.avatarStates = ['circular', 'square'];
32
+ exports.stylingSettings = {
33
+ tokens: [JSAvatarTokens_1.defaultJSAvatarTokens, JSAvatar_types_1.JSAvatarName],
34
+ states: exports.avatarStates,
35
+ slotProps: {
36
+ root: framework_1.buildProps(function (tokens) {
37
+ var physicalSize = JSAvatar_helpers_1.calculateEffectiveSizes(tokens).physicalSize;
38
+ var horizontalIconAlignment = tokens.horizontalIconAlignment, verticalIconAlignment = tokens.verticalIconAlignment;
39
+ return {
40
+ style: {
41
+ flexDirection: 'row',
42
+ width: physicalSize,
43
+ height: physicalSize,
44
+ justifyContent: nameMap[horizontalIconAlignment || 'end'],
45
+ alignItems: nameMap[verticalIconAlignment || 'end'],
46
+ horizontalIconAlignment: horizontalIconAlignment,
47
+ verticalIconAlignment: verticalIconAlignment,
48
+ },
49
+ };
50
+ }, ['horizontalIconAlignment', 'verticalIconAlignment']),
51
+ initials: framework_1.buildProps(function (tokens) {
52
+ var initialsSize = JSAvatar_helpers_1.calculateEffectiveSizes(tokens).initialsSize;
53
+ return {
54
+ style: {
55
+ fontSize: initialsSize,
56
+ },
57
+ };
58
+ }, ['initialsSize']),
59
+ initialsBackground: framework_1.buildProps(function (tokens, theme) {
60
+ var physicalSize = JSAvatar_helpers_1.calculateEffectiveSizes(tokens).physicalSize;
61
+ var backgroundColor = tokens.backgroundColor, coinColorFluent = tokens.coinColorFluent;
62
+ var effectiveBackgroundColor = backgroundColor;
63
+ if (coinColorFluent) {
64
+ effectiveBackgroundColor = JSAvatar_helpers_1.convertCoinColorFluent(coinColorFluent);
65
+ }
66
+ return {
67
+ style: __assign(__assign({}, tokens_1.borderStyles.from(tokens, theme)), { width: physicalSize, height: physicalSize, flexGrow: 1, alignSelf: 'stretch', justifyContent: 'center', alignItems: 'center', backgroundColor: effectiveBackgroundColor }),
68
+ };
69
+ }, __spreadArrays(['coinColorFluent', 'backgroundColor', 'physicalSize'], tokens_1.borderStyles.keys)),
70
+ photo: framework_1.buildProps(function (tokens) {
71
+ var physicalSize = JSAvatar_helpers_1.calculateEffectiveSizes(tokens).physicalSize;
72
+ return {
73
+ style: {
74
+ borderRadius: tokens.borderRadius,
75
+ width: physicalSize,
76
+ height: physicalSize,
77
+ },
78
+ };
79
+ }, ['physicalSize', 'borderRadius']),
80
+ icon: framework_1.buildProps(function (tokens, theme) {
81
+ var _a = JSAvatar_helpers_1.calculateEffectiveSizes(tokens), iconSize = _a.iconSize, iconStrokeWidth = _a.iconStrokeWidth;
82
+ var iconSizeAdjusted = iconSize + iconStrokeWidth * 2;
83
+ var iconStrokeColor = tokens.iconStrokeColor || theme.colors.background;
84
+ return {
85
+ style: {
86
+ position: 'absolute',
87
+ width: iconSizeAdjusted,
88
+ height: iconSizeAdjusted,
89
+ bottom: -iconStrokeWidth,
90
+ end: -iconStrokeWidth,
91
+ borderRadius: iconSizeAdjusted / 2,
92
+ borderWidth: iconStrokeWidth,
93
+ borderColor: iconStrokeColor,
94
+ },
95
+ };
96
+ }, ['iconSize', 'iconStrokeWidth', 'iconStrokeColor']),
97
+ ring: framework_1.buildProps(function (tokens, theme) {
98
+ var physicalSize = JSAvatar_helpers_1.calculateEffectiveSizes(tokens).physicalSize;
99
+ var ring = tokens.ring;
100
+ if (!ring)
101
+ return {};
102
+ var innerGap = ring.innerGap != undefined ? JSAvatar_helpers_1.getRingThickness(ring.innerGap) : JSAvatar_helpers_1.getRingThickness(ring.ringThickness || 'xxlarge');
103
+ var effectiveRingThickness = 2 * JSAvatar_helpers_1.getRingThickness(ring.ringThickness || 'xxlarge') + innerGap;
104
+ var effectiveSize = physicalSize + 2 * effectiveRingThickness;
105
+ var ringColor = ring.ringBackgroundColor || theme.colors.personaActivityRing;
106
+ return {
107
+ style: __assign({ borderStyle: 'solid', borderColor: ringColor, borderWidth: effectiveRingThickness, width: effectiveSize, height: effectiveSize, position: 'absolute', top: -effectiveRingThickness, left: -effectiveRingThickness }, tokens_1.borderStyles.from(tokens, theme)),
108
+ };
109
+ }, __spreadArrays(['physicalSize', 'ring', 'physicalSize'], tokens_1.borderStyles.keys)),
110
+ glow: framework_1.buildProps(function (tokens, theme) {
111
+ var physicalSize = JSAvatar_helpers_1.calculateEffectiveSizes(tokens).physicalSize;
112
+ var ring = tokens.ring;
113
+ if (!ring)
114
+ return {};
115
+ var innerGap = ring.innerGap != undefined ? JSAvatar_helpers_1.getRingThickness(ring.innerGap) : JSAvatar_helpers_1.getRingThickness(ring.ringThickness || 'xxlarge');
116
+ var effectiveRingThickness = JSAvatar_helpers_1.getRingThickness(ring.ringThickness || 'xxlarge') + innerGap;
117
+ var effectiveSize = physicalSize + 2 * effectiveRingThickness;
118
+ var glowColor = ring.accent ? theme.colors.accentButtonBackground : ring.ringColor || theme.colors.personaActivityGlow;
119
+ return {
120
+ style: __assign({ borderStyle: 'solid', borderColor: glowColor, borderWidth: effectiveRingThickness - innerGap, width: effectiveSize, height: effectiveSize, position: 'absolute', top: -effectiveRingThickness, left: -effectiveRingThickness }, tokens_1.borderStyles.from(tokens, theme)),
121
+ };
122
+ }, __spreadArrays(['physicalSize', 'ring'], tokens_1.borderStyles.keys)),
123
+ },
124
+ };
125
+ //# sourceMappingURL=JSAvatar.styling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSAvatar.styling.js","sourceRoot":"","sources":["../src/JSAvatar.styling.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mDAAgG;AAChG,8DAAwF;AACxF,mDAAyD;AAEzD,uDAAuG;AACvG,wDAA6D;AAE7D,IAAM,OAAO,GAA8B;IACzC,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,UAAU;CAChB,CAAC;AAEW,QAAA,YAAY,GAA6B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAEhE,QAAA,eAAe,GAAsE;IAChG,MAAM,EAAE,CAAC,sCAAqB,EAAE,6BAAY,CAAC;IAC7C,MAAM,EAAE,oBAAY;IACpB,SAAS,EAAE;QACT,IAAI,EAAE,sBAAU,CACd,UAAC,MAAsB;YACb,IAAA,8EAAY,CAAqC;YACjD,IAAA,wDAAuB,EAAE,oDAAqB,CAAY;YAClE,OAAO;gBACL,KAAK,EAAE;oBACL,aAAa,EAAE,KAAK;oBACpB,KAAK,EAAE,YAAY;oBACnB,MAAM,EAAE,YAAY;oBACpB,cAAc,EAAE,OAAO,CAAC,uBAAuB,IAAI,KAAK,CAAgC;oBACxF,UAAU,EAAE,OAAO,CAAC,qBAAqB,IAAI,KAAK,CAA4B;oBAC9E,uBAAuB,yBAAA;oBACvB,qBAAqB,uBAAA;iBACtB;aACF,CAAC;QACJ,CAAC,EACD,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,CACrD;QACD,QAAQ,EAAE,sBAAU,CAClB,UAAC,MAAsB;YACb,IAAA,8EAAY,CAAqC;YACzD,OAAO;gBACL,KAAK,EAAE;oBACL,QAAQ,EAAE,YAAY;iBACvB;aACF,CAAC;QACJ,CAAC,EACD,CAAC,cAAc,CAAC,CACjB;QACD,kBAAkB,EAAE,sBAAU,CAC5B,UAAC,MAAsB,EAAE,KAAY;YAC3B,IAAA,8EAAY,CAAqC;YACjD,IAAA,wCAAe,EAAE,wCAAe,CAAY;YACpD,IAAI,wBAAwB,GAAG,eAAe,CAAC;YAC/C,IAAI,eAAe,EAAE;gBACnB,wBAAwB,GAAG,yCAAsB,CAAC,eAAe,CAAC,CAAC;aACpE;YACD,OAAO;gBACL,KAAK,wBACA,qBAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KACnC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,QAAQ,EACxB,UAAU,EAAE,QAAQ,EACpB,eAAe,EAAE,wBAAwB,GAC1C;aACF,CAAC;QACJ,CAAC,kBACA,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,GAAK,qBAAY,CAAC,IAAI,EAC5E;QACD,KAAK,EAAE,sBAAU,CACf,UAAC,MAAsB;YACb,IAAA,8EAAY,CAAqC;YAEzD,OAAO;gBACL,KAAK,EAAE;oBACL,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,KAAK,EAAE,YAAY;oBACnB,MAAM,EAAE,YAAY;iBACrB;aACF,CAAC;QACJ,CAAC,EACD,CAAC,cAAc,EAAE,cAAc,CAAC,CACjC;QACD,IAAI,EAAE,sBAAU,CACd,UAAC,MAAsB,EAAE,KAAY;YAC7B,IAAA,uDAA+D,EAA7D,sBAAQ,EAAE,oCAAmD,CAAC;YACtE,IAAM,gBAAgB,GAAG,QAAQ,GAAG,eAAe,GAAG,CAAC,CAAC;YACxD,IAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;YAC1E,OAAO;gBACL,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,gBAAgB;oBACvB,MAAM,EAAE,gBAAgB;oBACxB,MAAM,EAAE,CAAC,eAAe;oBACxB,GAAG,EAAE,CAAC,eAAe;oBACrB,YAAY,EAAE,gBAAgB,GAAG,CAAC;oBAClC,WAAW,EAAE,eAAe;oBAC5B,WAAW,EAAE,eAAe;iBAC7B;aACF,CAAC;QACJ,CAAC,EACD,CAAC,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CACnD;QACD,IAAI,EAAE,sBAAU,CACd,UAAC,MAAsB,EAAE,KAAY;YAC3B,IAAA,8EAAY,CAAqC;YACjD,IAAA,kBAAI,CAAY;YAExB,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,CAAC;YAErB,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,mCAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,mCAAgB,CAAC,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC;YAElI,IAAM,sBAAsB,GAAG,CAAC,GAAG,mCAAgB,CAAC,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC,GAAG,QAAQ,CAAC;YAChG,IAAM,aAAa,GAAG,YAAY,GAAG,CAAC,GAAG,sBAAsB,CAAC;YAChE,IAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC;YAC/E,OAAO;gBACL,KAAK,aACH,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,SAAS,EACtB,WAAW,EAAE,sBAAsB,EACnC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,EACpB,GAAG,EAAE,CAAC,sBAAsB,EAC5B,IAAI,EAAE,CAAC,sBAAsB,IAC1B,qBAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CACpC;aACF,CAAC;QACJ,CAAC,kBACA,cAAc,EAAE,MAAM,EAAE,cAAc,GAAK,qBAAY,CAAC,IAAI,EAC9D;QACD,IAAI,EAAE,sBAAU,CACd,UAAC,MAAsB,EAAE,KAAY;YAC3B,IAAA,8EAAY,CAAqC;YACjD,IAAA,kBAAI,CAAY;YAExB,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,CAAC;YAErB,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,mCAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,mCAAgB,CAAC,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC;YAElI,IAAM,sBAAsB,GAAG,mCAAgB,CAAC,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC,GAAG,QAAQ,CAAC;YAC5F,IAAM,aAAa,GAAG,YAAY,GAAG,CAAC,GAAG,sBAAsB,CAAC;YAChE,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC;YACzH,OAAO;gBACL,KAAK,aACH,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,SAAS,EACtB,WAAW,EAAE,sBAAsB,GAAG,QAAQ,EAC9C,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,EACpB,GAAG,EAAE,CAAC,sBAAsB,EAC5B,IAAI,EAAE,CAAC,sBAAsB,IAC1B,qBAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CACpC;aACF,CAAC;QACJ,CAAC,kBACA,cAAc,EAAE,MAAM,GAAK,qBAAY,CAAC,IAAI,EAC9C;KACF;CACF,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import type { IViewProps } from '@fluentui-react-native/adapters';
2
2
  import { ImageProps, ViewProps, ImageURISource, TextProps, ColorValue } from 'react-native';
3
- import { IBackgroundColorTokens, IForegroundColorTokens } from '@fluentui-react-native/tokens';
4
- export declare const avatarName = "Avatar";
3
+ import { IBackgroundColorTokens, IForegroundColorTokens, IBorderTokens } from '@fluentui-react-native/tokens';
4
+ export declare const JSAvatarName = "Avatar";
5
5
  export declare type AvatarSize = 'size8' | 'size24' | 'size32' | 'size40' | 'size48' | 'size56' | 'size72' | 'size100' | 'size120';
6
+ export declare type AvatarShape = 'circular' | 'square';
7
+ export declare type AvatarActive = 'active' | 'inactive' | 'unset';
8
+ export declare type AvatarActiveAppearance = 'ring' | 'shadow' | 'glow' | 'ring-shadow' | 'ring-glow';
6
9
  /**
7
10
  * Sets color of the avatar when there is no picture. Uses fluent color names
8
11
  */
@@ -22,12 +25,15 @@ export interface AvatarConfigurableProps {
22
25
  ring?: RingConfig;
23
26
  coinColorFluent?: AvatarColor;
24
27
  }
25
- export interface AvatarProps extends IViewProps, AvatarConfigurableProps {
28
+ export interface JSAvatarProps extends IViewProps, AvatarConfigurableProps {
29
+ active?: AvatarActive;
30
+ activeAppearance?: AvatarActiveAppearance;
26
31
  imageUrl?: string;
27
32
  imageDescription?: string;
28
33
  initials?: string;
29
34
  presence?: AvatarPresence;
30
35
  isOutOfOffice?: boolean;
36
+ shape?: AvatarShape;
31
37
  }
32
38
  export interface AvatarSlotProps {
33
39
  root: ViewProps;
@@ -39,7 +45,7 @@ export interface AvatarSlotProps {
39
45
  glow: ViewProps;
40
46
  }
41
47
  export declare type IconAlignment = 'start' | 'center' | 'end';
42
- export interface AvatarTokens extends IBackgroundColorTokens, IForegroundColorTokens, AvatarConfigurableProps {
48
+ export interface JSAvatarTokens extends IBackgroundColorTokens, IForegroundColorTokens, AvatarConfigurableProps, IBorderTokens {
43
49
  avatarSize?: number;
44
50
  iconSize?: number;
45
51
  iconStrokeWidth?: number;
@@ -48,21 +54,23 @@ export interface AvatarTokens extends IBackgroundColorTokens, IForegroundColorTo
48
54
  horizontalIconAlignment?: IconAlignment;
49
55
  verticalIconAlignment?: IconAlignment;
50
56
  physicalSize?: number;
57
+ circular?: JSAvatarTokens;
58
+ square?: JSAvatarTokens;
51
59
  }
52
- export interface AvatarState {
60
+ export interface JSAvatarState {
53
61
  personaPhotoSource: ImageURISource | undefined;
54
62
  iconSource: ImageURISource | undefined;
55
63
  showRing: boolean;
56
64
  transparentRing: boolean;
57
65
  }
58
66
  export interface AvatarInfo {
59
- props: AvatarProps;
60
- state: AvatarState;
67
+ props: JSAvatarProps;
68
+ state: JSAvatarState;
61
69
  }
62
- export interface AvatarType {
63
- props: AvatarProps;
70
+ export interface JSAvatarType {
71
+ props: JSAvatarProps;
64
72
  slotProps: AvatarSlotProps;
65
- tokens: AvatarTokens;
66
- state: AvatarState;
73
+ tokens: JSAvatarTokens;
74
+ state: JSAvatarState;
67
75
  }
68
- //# sourceMappingURL=Avatar.types.d.ts.map
76
+ //# sourceMappingURL=JSAvatar.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSAvatar.types.d.ts","sourceRoot":"","sources":["../src/JSAvatar.types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.avatarName = 'Avatar';
4
- //# sourceMappingURL=Avatar.types.js.map
3
+ exports.JSAvatarName = 'Avatar';
4
+ //# sourceMappingURL=JSAvatar.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSAvatar.types.js","sourceRoot":"","sources":["../src/JSAvatar.types.ts"],"names":[],"mappings":";;AAIa,QAAA,YAAY,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Theme } from '@fluentui-react-native/framework';
2
+ import { TokenSettings } from '@fluentui-react-native/use-styling';
3
+ import { JSAvatarTokens } from '.';
4
+ export declare const defaultJSAvatarTokens: TokenSettings<JSAvatarTokens, Theme>;
5
+ //# sourceMappingURL=JSAvatarTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSAvatarTokens.d.ts","sourceRoot":"","sources":["../src/JSAvatarTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC;AAInC,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,cAAc,EAAE,KAAK,CAajD,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var JSAvatar_helpers_1 = require("./JSAvatar.helpers");
4
+ var theme_tokens_1 = require("@fluentui-react-native/theme-tokens");
5
+ exports.defaultJSAvatarTokens = function () {
6
+ return ({
7
+ horizontalIconAlignment: 'end',
8
+ verticalIconAlignment: 'end',
9
+ color: 'white',
10
+ iconStrokeColor: 'white',
11
+ backgroundColor: JSAvatar_helpers_1.convertCoinColorFluent('cornflower'),
12
+ circular: {
13
+ borderRadius: theme_tokens_1.globalTokens.corner.radius.circle,
14
+ },
15
+ square: {
16
+ borderRadius: theme_tokens_1.globalTokens.corner.radius.medium,
17
+ },
18
+ });
19
+ };
20
+ //# sourceMappingURL=JSAvatarTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSAvatarTokens.js","sourceRoot":"","sources":["../src/JSAvatarTokens.ts"],"names":[],"mappings":";;AAGA,uDAA4D;AAC5D,oEAAmE;AAEtD,QAAA,qBAAqB,GAAyC;IACzE,OAAA,CAAC;QACC,uBAAuB,EAAE,KAAK;QAC9B,qBAAqB,EAAE,KAAK;QAC5B,KAAK,EAAE,OAAO;QACd,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,yCAAsB,CAAC,YAAY,CAAC;QACrD,QAAQ,EAAE;YACR,YAAY,EAAE,2BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;SAChD;QACD,MAAM,EAAE;YACN,YAAY,EAAE,2BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;SAChD;KACiB,CAAA;AAZpB,CAYoB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './Avatar';
2
- export * from './Avatar.types';
2
+ export * from './JSAvatar';
3
+ export * from './JSAvatar.types';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
@@ -4,5 +4,6 @@ function __export(m) {
4
4
  }
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  __export(require("./Avatar"));
7
- __export(require("./Avatar.types"));
7
+ __export(require("./JSAvatar"));
8
+ __export(require("./JSAvatar.types"));
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,8BAAyB;AACzB,oCAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,8BAAyB;AACzB,gCAA2B;AAC3B,sCAAiC"}
@@ -1,4 +1,4 @@
1
- import { AvatarProps, AvatarInfo } from './Avatar.types';
1
+ import { JSAvatarProps, AvatarInfo } from './JSAvatar.types';
2
2
  /**
3
3
  * Re-usable hook for FURN Avatar.
4
4
  * This hook configures Avatar props and state for FURN Avatar.
@@ -6,5 +6,5 @@ import { AvatarProps, AvatarInfo } from './Avatar.types';
6
6
  * @param props user props sent to FURN Avatar
7
7
  * @returns configured props and state for FURN Avatar
8
8
  */
9
- export declare const useAvatar: (props: AvatarProps) => AvatarInfo;
9
+ export declare const useAvatar: (props: JSAvatarProps) => AvatarInfo;
10
10
  //# sourceMappingURL=useAvatar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAvatar.d.ts","sourceRoot":"","sources":["../src/useAvatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAe,MAAM,gBAAgB,CAAC;AAGtE;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,oCA+BrB,CAAC"}
1
+ {"version":3,"file":"useAvatar.d.ts","sourceRoot":"","sources":["../src/useAvatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAiB,MAAM,kBAAkB,CAAC;AAG5E;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,sCAgCrB,CAAC"}
@@ -22,7 +22,7 @@ var __rest = (this && this.__rest) || function (s, e) {
22
22
  return t;
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- var Avatar_helpers_1 = require("./Avatar.helpers");
25
+ var JSAvatar_helpers_1 = require("./JSAvatar.helpers");
26
26
  /**
27
27
  * Re-usable hook for FURN Avatar.
28
28
  * This hook configures Avatar props and state for FURN Avatar.
@@ -31,13 +31,13 @@ var Avatar_helpers_1 = require("./Avatar.helpers");
31
31
  * @returns configured props and state for FURN Avatar
32
32
  */
33
33
  exports.useAvatar = function (props) {
34
- var imageUrl = props.imageUrl, imageDescription = props.imageDescription, initials = props.initials, presence = props.presence, isOutOfOffice = props.isOutOfOffice, ring = props.ring, rest = __rest(props, ["imageUrl", "imageDescription", "initials", "presence", "isOutOfOffice", "ring"]);
34
+ var imageUrl = props.imageUrl, imageDescription = props.imageDescription, initials = props.initials, presence = props.presence, isOutOfOffice = props.isOutOfOffice, ring = props.ring, shape = props.shape, rest = __rest(props, ["imageUrl", "imageDescription", "initials", "presence", "isOutOfOffice", "ring", "shape"]);
35
35
  var personaPhotoSource = imageUrl === undefined
36
36
  ? undefined
37
37
  : {
38
38
  uri: imageUrl,
39
39
  };
40
- var iconSource = presence === undefined ? undefined : Avatar_helpers_1.getPresenceIconSource(presence, isOutOfOffice || false);
40
+ var iconSource = presence === undefined ? undefined : JSAvatar_helpers_1.getPresenceIconSource(presence, isOutOfOffice || false);
41
41
  var showRing = !!ring;
42
42
  var transparentRing = !!(ring === null || ring === void 0 ? void 0 : ring.transparent);
43
43
  var state = {
@@ -47,7 +47,7 @@ exports.useAvatar = function (props) {
47
47
  transparentRing: transparentRing,
48
48
  };
49
49
  return {
50
- props: __assign({ children: initials, accessibilityLabel: imageDescription }, rest),
50
+ props: __assign({ children: initials, accessibilityLabel: imageDescription, shape: shape || 'circular' }, rest),
51
51
  state: __assign({}, state),
52
52
  };
53
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useAvatar.js","sourceRoot":"","sources":["../src/useAvatar.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AACA,mDAAyD;AAEzD;;;;;;GAMG;AACU,QAAA,SAAS,GAAG,UAAC,KAAkB;IAClC,IAAA,yBAAQ,EAAE,yCAAgB,EAAE,yBAAQ,EAAE,yBAAQ,EAAE,mCAAa,EAAE,iBAAI,EAAE,uGAAO,CAAW;IAE/F,IAAM,kBAAkB,GACtB,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC;YACE,GAAG,EAAE,QAAQ;SACd,CAAC;IAER,IAAM,UAAU,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,sCAAqB,CAAC,QAAQ,EAAE,aAAa,IAAI,KAAK,CAAC,CAAC;IAChH,IAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;IACxB,IAAM,eAAe,GAAG,CAAC,EAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAA,CAAC;IAE5C,IAAM,KAAK,GAAgB;QACzB,UAAU,YAAA;QACV,kBAAkB,oBAAA;QAClB,QAAQ,UAAA;QACR,eAAe,iBAAA;KAChB,CAAC;IAEF,OAAO;QACL,KAAK,aACH,QAAQ,EAAE,QAAQ,EAClB,kBAAkB,EAAE,gBAAgB,IACjC,IAAI,CACR;QACD,KAAK,eACA,KAAK,CACT;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"useAvatar.js","sourceRoot":"","sources":["../src/useAvatar.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AACA,uDAA2D;AAE3D;;;;;;GAMG;AACU,QAAA,SAAS,GAAG,UAAC,KAAoB;IACpC,IAAA,yBAAQ,EAAE,yCAAgB,EAAE,yBAAQ,EAAE,yBAAQ,EAAE,mCAAa,EAAE,iBAAI,EAAE,mBAAK,EAAE,gHAAO,CAAW;IAEtG,IAAM,kBAAkB,GACtB,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC;YACE,GAAG,EAAE,QAAQ;SACd,CAAC;IAER,IAAM,UAAU,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wCAAqB,CAAC,QAAQ,EAAE,aAAa,IAAI,KAAK,CAAC,CAAC;IAChH,IAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;IACxB,IAAM,eAAe,GAAG,CAAC,EAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAA,CAAC;IAE5C,IAAM,KAAK,GAAkB;QAC3B,UAAU,YAAA;QACV,kBAAkB,oBAAA;QAClB,QAAQ,UAAA;QACR,eAAe,iBAAA;KAChB,CAAC;IAEF,OAAO;QACL,KAAK,aACH,QAAQ,EAAE,QAAQ,EAClB,kBAAkB,EAAE,gBAAgB,EACpC,KAAK,EAAE,KAAK,IAAI,UAAU,IACvB,IAAI,CACR;QACD,KAAK,eACA,KAAK,CACT;KACF,CAAC;AACJ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-react-native/experimental-avatar",
3
- "version": "0.13.0",
3
+ "version": "0.13.4",
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>",
@@ -20,11 +20,11 @@
20
20
  "prettier-fix": "fluentui-scripts prettier --fix true"
21
21
  },
22
22
  "dependencies": {
23
- "@fluentui-react-native/adapters": "^0.8.0",
23
+ "@fluentui-react-native/adapters": "^0.8.1",
24
24
  "@fluentui-react-native/component-cache": "^1.3.0",
25
- "@fluentui-react-native/framework": "0.7.0",
26
- "@fluentui-react-native/theme-tokens": "^0.10.0",
27
- "@fluentui-react-native/tokens": "^0.11.0",
25
+ "@fluentui-react-native/framework": "0.7.3",
26
+ "@fluentui-react-native/theme-tokens": "^0.11.1",
27
+ "@fluentui-react-native/tokens": "^0.11.1",
28
28
  "@fluentui-react-native/use-styling": "^0.8.0"
29
29
  },
30
30
  "devDependencies": {
package/src/Avatar.tsx CHANGED
@@ -1,44 +1,134 @@
1
1
  /** @jsx withSlots */
2
- import { Image, View, Text } from 'react-native';
3
- import { AvatarProps, AvatarType, avatarName } from './Avatar.types';
4
- import { stylingSettings } from './Avatar.styling';
5
- import { compose, UseSlots, mergeProps, withSlots } from '@fluentui-react-native/framework';
6
- import { useAvatar } from './useAvatar';
2
+ import { compose, UseSlots, buildProps, mergeProps, withSlots } from '@fluentui-react-native/framework';
3
+ import { ImageURISource, NativeModules, ViewProps, ColorValue } from 'react-native';
4
+ import { ensureNativeComponent } from '@fluentui-react-native/component-cache';
5
+
6
+ const avatarName = 'Avatar';
7
+
8
+ const NativeAvatarView = ensureNativeComponent('FRNAvatarView');
9
+
10
+ export type Size = 'xSmall' | 'small' | 'medium' | 'large' | 'xLarge' | 'xxLarge';
11
+
12
+ export type AvatarStyle = 'default' | 'accent' | 'group' | 'outlined' | 'outlinedPrimary' | 'overflow';
13
+
14
+ export type Presence = 'none' | 'available' | 'away' | 'blocked' | 'doNotDisturb' | 'offline' | 'unknown';
15
+
16
+ interface ExportedConstants {
17
+ sizes: { [key in Size]: number };
18
+ }
19
+
20
+ const ExportedNativeConstants: ExportedConstants = NativeModules.FRNAvatarViewManager;
21
+
22
+ export type AvatarTokens = {
23
+ /**
24
+ * Supported Avatar sizes
25
+ */
26
+ size?: Size;
27
+
28
+ /**
29
+ * Supported Avatar styles
30
+ */
31
+ avatarStyle?: AvatarStyle;
32
+ };
33
+
34
+ export type AvatarProps = AvatarTokens & {
35
+ /**
36
+ * The image to be displayed
37
+ */
38
+ imageSource?: ImageURISource;
39
+
40
+ /**
41
+ * The primary text to create initials with (e.g. a name)
42
+ */
43
+ primaryText?: string;
44
+
45
+ /**
46
+ * The secondary text to create initials with if primary text is not provided (e.g. an email address)
47
+ */
48
+ secondaryText?: string;
49
+
50
+ /**
51
+ * A custom color for the ring around the Avatar
52
+ */
53
+ ringColor?: ColorValue;
54
+
55
+ /**
56
+ * A custom color for the avatar initials when no image is shown
57
+ */
58
+ foregroundColor?: ColorValue;
59
+
60
+ /**
61
+ * A custom color for the avatar background when no image is shown
62
+ */
63
+ backgroundColor?: ColorValue;
64
+
65
+ /**
66
+ * The avatar view's presence state.
67
+ */
68
+ presence?: Presence;
69
+
70
+ /**
71
+ * A boolean inidicating whether the ring is visible
72
+ */
73
+ isRingVisible?: boolean;
74
+
75
+ /**
76
+ * A boolean indicating whether the Inner Ring Gap is transparent
77
+ */
78
+ isTransparent?: boolean;
79
+
80
+ /**
81
+ * A boolean indicating out of office status
82
+ */
83
+ isOutOfOffice?: boolean;
84
+
85
+ /**
86
+ * A boolean indicating whether the gap between the avatar and ring is visible.
87
+ */
88
+ hasRingInnerGap?: boolean;
89
+
90
+ /**
91
+ * An image to be shown as the backdrop of the ring, rather then a solid color.
92
+ * Takes precendence over `ringColor`
93
+ */
94
+ customBorderImageSource?: ImageURISource;
95
+ };
96
+
97
+ const tokensThatAreAlsoProps: (keyof AvatarTokens)[] = ['size', 'avatarStyle'];
98
+
99
+ export type NativeAvatarViewProps = ViewProps & AvatarProps;
100
+ interface AvatarType {
101
+ props: AvatarProps;
102
+ slotProps: { root: NativeAvatarViewProps };
103
+ tokens: AvatarTokens;
104
+ }
7
105
 
8
106
  export const Avatar = compose<AvatarType>({
9
107
  displayName: avatarName,
10
- ...stylingSettings,
11
- slots: {
12
- root: View,
13
- photo: Image,
14
- initials: Text,
15
- initialsBackground: View,
16
- icon: Image,
17
- ring: View,
18
- glow: View,
108
+ tokens: [
109
+ {
110
+ size: 'small',
111
+ avatarStyle: 'default',
112
+ },
113
+ avatarName,
114
+ ],
115
+ tokensThatAreAlsoProps,
116
+ slots: { root: NativeAvatarView },
117
+ slotProps: {
118
+ root: buildProps<NativeAvatarViewProps, AvatarTokens>(
119
+ (tokens) => ({
120
+ size: tokens.size,
121
+ style: {
122
+ height: ExportedNativeConstants.sizes[tokens.size],
123
+ width: ExportedNativeConstants.sizes[tokens.size],
124
+ },
125
+ }),
126
+ ['size'],
127
+ ),
19
128
  },
20
- render: (userProps: AvatarProps, useSlots: UseSlots<AvatarType>) => {
21
- const Avatar = useAvatar(userProps);
22
- const Slots = useSlots(userProps, (layer) => Avatar.state[layer] || userProps[layer]);
23
-
24
- return (final: AvatarProps) => {
25
- const { children, accessibilityLabel, ...mergedProps } = mergeProps(Avatar.props, final);
26
- const { personaPhotoSource, iconSource, showRing, transparentRing } = Avatar.state;
27
-
28
- return (
29
- <Slots.root {...mergedProps}>
30
- {personaPhotoSource ? (
31
- <Slots.photo accessibilityLabel={accessibilityLabel} source={personaPhotoSource} />
32
- ) : (
33
- <Slots.initialsBackground>
34
- <Slots.initials>{children}</Slots.initials>
35
- </Slots.initialsBackground>
36
- )}
37
- {showRing && !transparentRing && <Slots.ring />}
38
- {showRing && <Slots.glow />}
39
- {!!iconSource && !!iconSource.uri && <Slots.icon source={iconSource} />}
40
- </Slots.root>
41
- );
42
- };
129
+ render: (props: AvatarProps, useSlots: UseSlots<AvatarType>) => {
130
+ const Root = useSlots(props).root;
131
+
132
+ return (rest: AvatarProps) => <Root {...mergeProps(props, rest)} />;
43
133
  },
44
134
  });
@@ -1,4 +1,4 @@
1
- import { AvatarSize, AvatarColor, AvatarPresence, AvatarTokens, RingThickness } from './Avatar.types';
1
+ import { AvatarSize, AvatarColor, AvatarPresence, JSAvatarTokens, RingThickness } from './JSAvatar.types';
2
2
  import { ImageURISource } from 'react-native';
3
3
  import { globalTokens } from '@fluentui-react-native/theme-tokens';
4
4
 
@@ -84,7 +84,7 @@ export function convertCoinColorFluent(coinColor: AvatarColor): string {
84
84
  return colorTableFluent[coinColor];
85
85
  }
86
86
 
87
- export function calculateEffectiveSizes(tokens: AvatarTokens): AvatarSizeConfig {
87
+ export function calculateEffectiveSizes(tokens: JSAvatarTokens): AvatarSizeConfig {
88
88
  const { size, avatarSize, iconSize, iconStrokeWidth, initialsSize } = tokens;
89
89
 
90
90
  if (size) {