@oxyhq/bloom 0.25.2 → 0.26.1
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.
- package/lib/commonjs/avatar/Avatar.js +92 -13
- package/lib/commonjs/avatar/Avatar.js.map +1 -1
- package/lib/commonjs/avatar/LiveBadge.js +65 -0
- package/lib/commonjs/avatar/LiveBadge.js.map +1 -0
- package/lib/module/avatar/Avatar.js +93 -14
- package/lib/module/avatar/Avatar.js.map +1 -1
- package/lib/module/avatar/LiveBadge.js +60 -0
- package/lib/module/avatar/LiveBadge.js.map +1 -0
- package/lib/typescript/commonjs/avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/commonjs/avatar/LiveBadge.d.ts +15 -0
- package/lib/typescript/commonjs/avatar/LiveBadge.d.ts.map +1 -0
- package/lib/typescript/commonjs/avatar/types.d.ts +21 -0
- package/lib/typescript/commonjs/avatar/types.d.ts.map +1 -1
- package/lib/typescript/module/avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/module/avatar/LiveBadge.d.ts +15 -0
- package/lib/typescript/module/avatar/LiveBadge.d.ts.map +1 -0
- package/lib/typescript/module/avatar/types.d.ts +21 -0
- package/lib/typescript/module/avatar/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/avatar/Avatar.stories.tsx +51 -0
- package/src/avatar/Avatar.tsx +113 -3
- package/src/avatar/LiveBadge.tsx +72 -0
- package/src/avatar/types.ts +21 -0
|
@@ -11,6 +11,7 @@ var _context = require("../image-resolver/context.js");
|
|
|
11
11
|
var _zIndex = require("../styles/z-index.js");
|
|
12
12
|
var _lazyRequire = require("../utils/lazy-require.js");
|
|
13
13
|
var _placeholderContext = require("./placeholder-context.js");
|
|
14
|
+
var _LiveBadge = require("./LiveBadge.js");
|
|
14
15
|
var _defaultAvatar = _interopRequireDefault(require("./default-avatar.js"));
|
|
15
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -47,6 +48,14 @@ let clipIdCounter = 0;
|
|
|
47
48
|
// Returns null if react-native-svg is not installed.
|
|
48
49
|
|
|
49
50
|
const getSvgModule = (0, _lazyRequire.lazyRequire)('react-native-svg');
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Live-ring drawing config passed down to shape renderers.
|
|
54
|
+
* - `color`: resolved ring color (theme `negative` or `liveColor` override).
|
|
55
|
+
* - `strokeWidth`: stroke width in the squircle's 0–1 path coordinate space.
|
|
56
|
+
* - `borderWidth`: ring border width in pixels for the circle fallback.
|
|
57
|
+
*/
|
|
58
|
+
|
|
50
59
|
function SquircleImage({
|
|
51
60
|
uri,
|
|
52
61
|
fallbackSource,
|
|
@@ -54,16 +63,24 @@ function SquircleImage({
|
|
|
54
63
|
fallbackColor,
|
|
55
64
|
placeholderIcon,
|
|
56
65
|
name,
|
|
57
|
-
onError
|
|
66
|
+
onError,
|
|
67
|
+
liveRing
|
|
58
68
|
}) {
|
|
59
69
|
const svg = getSvgModule();
|
|
60
70
|
if (!svg) {
|
|
61
|
-
// Fallback to circle if react-native-svg is not installed
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
// Fallback to circle if react-native-svg is not installed. The circle
|
|
72
|
+
// fallback also gets a circle live ring (matching its rendered shape).
|
|
73
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
74
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(CircleFallback, {
|
|
75
|
+
size: size,
|
|
76
|
+
fallbackColor: fallbackColor,
|
|
77
|
+
icon: placeholderIcon,
|
|
78
|
+
name: name
|
|
79
|
+
}), liveRing && /*#__PURE__*/(0, _jsxRuntime.jsx)(CircleLiveRing, {
|
|
80
|
+
radius: size / 2,
|
|
81
|
+
color: liveRing.color,
|
|
82
|
+
borderWidth: liveRing.borderWidth
|
|
83
|
+
})]
|
|
67
84
|
});
|
|
68
85
|
}
|
|
69
86
|
const {
|
|
@@ -78,11 +95,17 @@ function SquircleImage({
|
|
|
78
95
|
uri
|
|
79
96
|
} : fallbackSource;
|
|
80
97
|
if (!href) {
|
|
81
|
-
return /*#__PURE__*/(0, _jsxRuntime.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
98
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
99
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(CircleFallback, {
|
|
100
|
+
size: size,
|
|
101
|
+
fallbackColor: fallbackColor,
|
|
102
|
+
icon: placeholderIcon,
|
|
103
|
+
name: name
|
|
104
|
+
}), liveRing && /*#__PURE__*/(0, _jsxRuntime.jsx)(CircleLiveRing, {
|
|
105
|
+
radius: size / 2,
|
|
106
|
+
color: liveRing.color,
|
|
107
|
+
borderWidth: liveRing.borderWidth
|
|
108
|
+
})]
|
|
86
109
|
});
|
|
87
110
|
}
|
|
88
111
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
@@ -109,6 +132,11 @@ function SquircleImage({
|
|
|
109
132
|
height: 1,
|
|
110
133
|
preserveAspectRatio: "xMidYMid slice",
|
|
111
134
|
clipPath: `url(#${clipId})`
|
|
135
|
+
}), liveRing && /*#__PURE__*/(0, _jsxRuntime.jsx)(Path, {
|
|
136
|
+
d: SQUIRCLE_PATH,
|
|
137
|
+
fill: "none",
|
|
138
|
+
stroke: liveRing.color,
|
|
139
|
+
strokeWidth: liveRing.strokeWidth
|
|
112
140
|
})]
|
|
113
141
|
})]
|
|
114
142
|
});
|
|
@@ -157,6 +185,28 @@ function CircleFallback({
|
|
|
157
185
|
}))
|
|
158
186
|
});
|
|
159
187
|
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Solid live ring for circular avatars — an absolutely-positioned inset-0
|
|
191
|
+
* overlay whose border overlays the avatar edge (drawn on top of the image,
|
|
192
|
+
* never a border on the image itself). Also used as the fallback ring for a
|
|
193
|
+
* squircle avatar when react-native-svg is unavailable.
|
|
194
|
+
*/
|
|
195
|
+
function CircleLiveRing({
|
|
196
|
+
radius,
|
|
197
|
+
color,
|
|
198
|
+
borderWidth
|
|
199
|
+
}) {
|
|
200
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
201
|
+
style: [_reactNative.StyleSheet.absoluteFill, {
|
|
202
|
+
borderRadius: radius,
|
|
203
|
+
borderColor: color,
|
|
204
|
+
borderWidth,
|
|
205
|
+
zIndex: _zIndex.Z_INDEX.raised,
|
|
206
|
+
pointerEvents: 'none'
|
|
207
|
+
}]
|
|
208
|
+
});
|
|
209
|
+
}
|
|
160
210
|
const AvatarComponent = ({
|
|
161
211
|
source,
|
|
162
212
|
uri,
|
|
@@ -172,6 +222,10 @@ const AvatarComponent = ({
|
|
|
172
222
|
placeholderIcon,
|
|
173
223
|
name,
|
|
174
224
|
onPress,
|
|
225
|
+
live = false,
|
|
226
|
+
hideLiveBadge = false,
|
|
227
|
+
liveLabel = 'LIVE',
|
|
228
|
+
liveColor,
|
|
175
229
|
testID
|
|
176
230
|
}) => {
|
|
177
231
|
const [errored, setErrored] = (0, _react.useState)(false);
|
|
@@ -228,6 +282,21 @@ const AvatarComponent = ({
|
|
|
228
282
|
if (resolvedImageSource) return resolvedImageSource;
|
|
229
283
|
return fallbackSource;
|
|
230
284
|
}, [effectiveUri, resolvedImageSource, fallbackSource]);
|
|
285
|
+
|
|
286
|
+
// Live indicator (modeled on Bluesky): a solid ring around the avatar plus,
|
|
287
|
+
// unless suppressed, a "LIVE" pill hanging off the bottom-center. Colors come
|
|
288
|
+
// from the theme (`negative` / `negativeForeground`) with an optional
|
|
289
|
+
// `liveColor` override. The badge is only shown for `size > 16`.
|
|
290
|
+
const liveRingColor = liveColor ?? theme.colors.negative;
|
|
291
|
+
const liveBorderWidth = size > 16 ? 2 : 1;
|
|
292
|
+
const liveRing = live ? {
|
|
293
|
+
color: liveRingColor,
|
|
294
|
+
// The squircle path is in 0–1 space; center-stroking it and letting the
|
|
295
|
+
// viewport clip the outer half yields a ~`liveBorderWidth`-px inset ring.
|
|
296
|
+
strokeWidth: liveBorderWidth / size * 2,
|
|
297
|
+
borderWidth: liveBorderWidth
|
|
298
|
+
} : undefined;
|
|
299
|
+
const showLiveBadge = live && size > 16 && !hideLiveBadge;
|
|
231
300
|
const content = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
232
301
|
style: [styles.container, {
|
|
233
302
|
width: size,
|
|
@@ -241,7 +310,8 @@ const AvatarComponent = ({
|
|
|
241
310
|
fallbackColor: fallbackColor,
|
|
242
311
|
placeholderIcon: resolvedPlaceholderIcon,
|
|
243
312
|
name: name,
|
|
244
|
-
onError: () => setErrored(true)
|
|
313
|
+
onError: () => setErrored(true),
|
|
314
|
+
liveRing: liveRing
|
|
245
315
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
246
316
|
style: [styles.imageContainer, {
|
|
247
317
|
width: size,
|
|
@@ -261,12 +331,21 @@ const AvatarComponent = ({
|
|
|
261
331
|
icon: resolvedPlaceholderIcon,
|
|
262
332
|
name: name
|
|
263
333
|
})
|
|
334
|
+
}), live && shape !== 'squircle' && /*#__PURE__*/(0, _jsxRuntime.jsx)(CircleLiveRing, {
|
|
335
|
+
radius: radius,
|
|
336
|
+
color: liveRingColor,
|
|
337
|
+
borderWidth: liveBorderWidth
|
|
264
338
|
}), verified && verifiedIcon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
265
339
|
style: [styles.verifiedBadge, {
|
|
266
340
|
width: size * 0.36,
|
|
267
341
|
height: size * 0.36
|
|
268
342
|
}],
|
|
269
343
|
children: verifiedIcon
|
|
344
|
+
}), showLiveBadge && /*#__PURE__*/(0, _jsxRuntime.jsx)(_LiveBadge.LiveBadge, {
|
|
345
|
+
variant: size > 32 ? 'small' : 'tiny',
|
|
346
|
+
label: liveLabel,
|
|
347
|
+
backgroundColor: liveRingColor,
|
|
348
|
+
textColor: theme.colors.negativeForeground
|
|
270
349
|
})]
|
|
271
350
|
});
|
|
272
351
|
if (onPress) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_context","_zIndex","_lazyRequire","_placeholderContext","_defaultAvatar","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NAME_AVATAR_COLORS","getInitial","name","trimmed","trim","firstCodePoint","toUpperCase","getNameColor","hash","length","charCodeAt","index","Math","abs","SQUIRCLE_PATH","clipIdCounter","getSvgModule","lazyRequire","SquircleImage","uri","fallbackSource","size","fallbackColor","placeholderIcon","onError","svg","jsx","CircleFallback","icon","Svg","Defs","ClipPath","Path","Image","SvgImage","clipId","useMemo","href","jsxs","Fragment","children","source","style","styles","errorDetector","width","height","viewBox","id","d","preserveAspectRatio","clipPath","radius","hasName","initialStyle","color","fontSize","round","fontWeight","lineHeight","textAlign","includeFontPadding","View","borderRadius","backgroundColor","justifyContent","alignItems","overflow","Text","allowFontScaling","numberOfLines","DEFAULT_AVATAR_IMAGE","resizeMode","AvatarComponent","variant","verified","verifiedIcon","shape","imageStyle","placeholderColor","onPress","testID","errored","setErrored","useState","theme","useTheme","placeholderConfig","useAvatarPlaceholder","colors","backgroundTertiary","resolvedPlaceholderIcon","undefined","prevSourceRef","useRef","prevUriRef","prevVariantRef","current","imageResolver","useImageResolver","resolvedUri","startsWith","resolvedImageSource","effectiveUri","imageSource","content","container","imageContainer","StyleSheet","absoluteFill","verifiedBadge","TouchableOpacity","create","position","bottom","right","zIndex","Z_INDEX","raised","opacity","Avatar","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_context","_zIndex","_lazyRequire","_placeholderContext","_LiveBadge","_defaultAvatar","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NAME_AVATAR_COLORS","getInitial","name","trimmed","trim","firstCodePoint","toUpperCase","getNameColor","hash","length","charCodeAt","index","Math","abs","SQUIRCLE_PATH","clipIdCounter","getSvgModule","lazyRequire","SquircleImage","uri","fallbackSource","size","fallbackColor","placeholderIcon","onError","liveRing","svg","jsxs","Fragment","children","jsx","CircleFallback","icon","CircleLiveRing","radius","color","borderWidth","Svg","Defs","ClipPath","Path","Image","SvgImage","clipId","useMemo","href","source","style","styles","errorDetector","width","height","viewBox","id","d","preserveAspectRatio","clipPath","fill","stroke","strokeWidth","hasName","initialStyle","fontSize","round","fontWeight","lineHeight","textAlign","includeFontPadding","View","borderRadius","backgroundColor","justifyContent","alignItems","overflow","Text","allowFontScaling","numberOfLines","DEFAULT_AVATAR_IMAGE","resizeMode","StyleSheet","absoluteFill","borderColor","zIndex","Z_INDEX","raised","pointerEvents","AvatarComponent","variant","verified","verifiedIcon","shape","imageStyle","placeholderColor","onPress","live","hideLiveBadge","liveLabel","liveColor","testID","errored","setErrored","useState","theme","useTheme","placeholderConfig","useAvatarPlaceholder","colors","backgroundTertiary","resolvedPlaceholderIcon","undefined","prevSourceRef","useRef","prevUriRef","prevVariantRef","current","imageResolver","useImageResolver","resolvedUri","startsWith","resolvedImageSource","effectiveUri","imageSource","liveRingColor","negative","liveBorderWidth","showLiveBadge","content","container","imageContainer","verifiedBadge","LiveBadge","label","textColor","negativeForeground","TouchableOpacity","create","position","bottom","right","opacity","Avatar","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.LiveBadge = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _zIndex = require("../styles/z-index.js");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
|
+
/**
|
|
13
|
+
* Small red "LIVE" pill that hangs off the bottom-center of an Avatar. Internal
|
|
14
|
+
* to the avatar family — not exported from the package. Modeled on Bluesky's
|
|
15
|
+
* live indicator: full-width absolute wrapper, center-aligned, `bottom: -5` so
|
|
16
|
+
* the pill protrudes below the avatar (the Avatar container is `overflow:
|
|
17
|
+
* 'visible'`).
|
|
18
|
+
*/
|
|
19
|
+
const LiveBadgeComponent = ({
|
|
20
|
+
variant,
|
|
21
|
+
label,
|
|
22
|
+
backgroundColor,
|
|
23
|
+
textColor
|
|
24
|
+
}) => {
|
|
25
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
26
|
+
style: styles.wrapper,
|
|
27
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
28
|
+
style: [styles.pill, {
|
|
29
|
+
backgroundColor
|
|
30
|
+
}],
|
|
31
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
32
|
+
allowFontScaling: false,
|
|
33
|
+
numberOfLines: 1,
|
|
34
|
+
style: [styles.text, {
|
|
35
|
+
color: textColor,
|
|
36
|
+
fontSize: variant === 'small' ? 10 : 7
|
|
37
|
+
}],
|
|
38
|
+
children: label
|
|
39
|
+
})
|
|
40
|
+
})
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
const styles = _reactNative.StyleSheet.create({
|
|
44
|
+
wrapper: {
|
|
45
|
+
position: 'absolute',
|
|
46
|
+
bottom: -5,
|
|
47
|
+
left: 0,
|
|
48
|
+
right: 0,
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
zIndex: _zIndex.Z_INDEX.raised,
|
|
51
|
+
pointerEvents: 'none'
|
|
52
|
+
},
|
|
53
|
+
pill: {
|
|
54
|
+
paddingVertical: 1,
|
|
55
|
+
paddingHorizontal: 3,
|
|
56
|
+
borderRadius: 4
|
|
57
|
+
},
|
|
58
|
+
text: {
|
|
59
|
+
fontWeight: '600',
|
|
60
|
+
textAlign: 'center'
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
const LiveBadge = exports.LiveBadge = /*#__PURE__*/(0, _react.memo)(LiveBadgeComponent);
|
|
64
|
+
LiveBadge.displayName = 'LiveBadge';
|
|
65
|
+
//# sourceMappingURL=LiveBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_zIndex","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LiveBadgeComponent","variant","label","backgroundColor","textColor","jsx","View","style","styles","wrapper","children","pill","Text","allowFontScaling","numberOfLines","text","color","fontSize","StyleSheet","create","position","bottom","left","right","alignItems","zIndex","Z_INDEX","raised","pointerEvents","paddingVertical","paddingHorizontal","borderRadius","fontWeight","textAlign","LiveBadge","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/LiveBadge.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ import { useImageResolver } from "../image-resolver/context.js";
|
|
|
7
7
|
import { Z_INDEX } from "../styles/z-index.js";
|
|
8
8
|
import { lazyRequire } from "../utils/lazy-require.js";
|
|
9
9
|
import { useAvatarPlaceholder } from "./placeholder-context.js";
|
|
10
|
+
import { LiveBadge } from "./LiveBadge.js";
|
|
10
11
|
// Google Contacts-inspired palette used to pick a deterministic background
|
|
11
12
|
// color for name-based placeholder avatars.
|
|
12
13
|
const NAME_AVATAR_COLORS = ['#D93025', '#E8710A', '#F9AB00', '#1E8E3E', '#12B5CB', '#1A73E8', '#7627BB', '#C5221F', '#0B8043', '#A142F4'];
|
|
@@ -33,7 +34,7 @@ function getNameColor(name) {
|
|
|
33
34
|
import DEFAULT_AVATAR_IMAGE from "./default-avatar.js";
|
|
34
35
|
|
|
35
36
|
// Squircle clip path normalized to 0–1 coordinate space (viewBox="0 0 1 1").
|
|
36
|
-
import { jsx as _jsx,
|
|
37
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
37
38
|
const SQUIRCLE_PATH = 'M0 0.5 L0.00122 0.31674 L0.00489 0.25123 L0.01103 0.20331 L0.01969 0.16478 L0.03097 0.13257 L0.04495 0.10518 L0.0618 0.08177 L0.08177 0.0618 L0.10518 0.04495 L0.13257 0.03097 L0.16478 0.01969 L0.20331 0.01103 L0.25123 0.00489 L0.31674 0.00122 L0.5 0' + ' L0.68895 0.0014 L0.7564 0.00561 L0.80559 0.01267 L0.84499 0.02264 L0.87771 0.03564 L0.9053 0.05181 L0.92862 0.07138 L0.94819 0.0947 L0.96436 0.12228 L0.97736 0.15501 L0.98733 0.19441 L0.99439 0.2436 L0.9986 0.31105 L1 0.5' + ' L0.9986 0.68895 L0.99439 0.7564 L0.98733 0.80559 L0.97736 0.84499 L0.96436 0.87771 L0.94819 0.9053 L0.92862 0.92862 L0.9053 0.94819 L0.87771 0.96436 L0.84499 0.97736 L0.80559 0.98733 L0.7564 0.99439 L0.68895 0.9986 L0.5 1' + ' L0.31105 0.9986 L0.2436 0.99439 L0.19441 0.98733 L0.15501 0.97736 L0.12228 0.96436 L0.0947 0.94819 L0.07138 0.92862 L0.05181 0.9053 L0.03564 0.87771 L0.02264 0.84499 L0.01267 0.80559 L0.00561 0.7564 L0.0014 0.68895 L0 0.5Z';
|
|
38
39
|
let clipIdCounter = 0;
|
|
39
40
|
|
|
@@ -41,6 +42,14 @@ let clipIdCounter = 0;
|
|
|
41
42
|
// Returns null if react-native-svg is not installed.
|
|
42
43
|
|
|
43
44
|
const getSvgModule = lazyRequire('react-native-svg');
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Live-ring drawing config passed down to shape renderers.
|
|
48
|
+
* - `color`: resolved ring color (theme `negative` or `liveColor` override).
|
|
49
|
+
* - `strokeWidth`: stroke width in the squircle's 0–1 path coordinate space.
|
|
50
|
+
* - `borderWidth`: ring border width in pixels for the circle fallback.
|
|
51
|
+
*/
|
|
52
|
+
|
|
44
53
|
function SquircleImage({
|
|
45
54
|
uri,
|
|
46
55
|
fallbackSource,
|
|
@@ -48,16 +57,24 @@ function SquircleImage({
|
|
|
48
57
|
fallbackColor,
|
|
49
58
|
placeholderIcon,
|
|
50
59
|
name,
|
|
51
|
-
onError
|
|
60
|
+
onError,
|
|
61
|
+
liveRing
|
|
52
62
|
}) {
|
|
53
63
|
const svg = getSvgModule();
|
|
54
64
|
if (!svg) {
|
|
55
|
-
// Fallback to circle if react-native-svg is not installed
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
// Fallback to circle if react-native-svg is not installed. The circle
|
|
66
|
+
// fallback also gets a circle live ring (matching its rendered shape).
|
|
67
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
68
|
+
children: [/*#__PURE__*/_jsx(CircleFallback, {
|
|
69
|
+
size: size,
|
|
70
|
+
fallbackColor: fallbackColor,
|
|
71
|
+
icon: placeholderIcon,
|
|
72
|
+
name: name
|
|
73
|
+
}), liveRing && /*#__PURE__*/_jsx(CircleLiveRing, {
|
|
74
|
+
radius: size / 2,
|
|
75
|
+
color: liveRing.color,
|
|
76
|
+
borderWidth: liveRing.borderWidth
|
|
77
|
+
})]
|
|
61
78
|
});
|
|
62
79
|
}
|
|
63
80
|
const {
|
|
@@ -72,11 +89,17 @@ function SquircleImage({
|
|
|
72
89
|
uri
|
|
73
90
|
} : fallbackSource;
|
|
74
91
|
if (!href) {
|
|
75
|
-
return /*#__PURE__*/
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
92
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
93
|
+
children: [/*#__PURE__*/_jsx(CircleFallback, {
|
|
94
|
+
size: size,
|
|
95
|
+
fallbackColor: fallbackColor,
|
|
96
|
+
icon: placeholderIcon,
|
|
97
|
+
name: name
|
|
98
|
+
}), liveRing && /*#__PURE__*/_jsx(CircleLiveRing, {
|
|
99
|
+
radius: size / 2,
|
|
100
|
+
color: liveRing.color,
|
|
101
|
+
borderWidth: liveRing.borderWidth
|
|
102
|
+
})]
|
|
80
103
|
});
|
|
81
104
|
}
|
|
82
105
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
@@ -103,6 +126,11 @@ function SquircleImage({
|
|
|
103
126
|
height: 1,
|
|
104
127
|
preserveAspectRatio: "xMidYMid slice",
|
|
105
128
|
clipPath: `url(#${clipId})`
|
|
129
|
+
}), liveRing && /*#__PURE__*/_jsx(Path, {
|
|
130
|
+
d: SQUIRCLE_PATH,
|
|
131
|
+
fill: "none",
|
|
132
|
+
stroke: liveRing.color,
|
|
133
|
+
strokeWidth: liveRing.strokeWidth
|
|
106
134
|
})]
|
|
107
135
|
})]
|
|
108
136
|
});
|
|
@@ -151,6 +179,28 @@ function CircleFallback({
|
|
|
151
179
|
}))
|
|
152
180
|
});
|
|
153
181
|
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Solid live ring for circular avatars — an absolutely-positioned inset-0
|
|
185
|
+
* overlay whose border overlays the avatar edge (drawn on top of the image,
|
|
186
|
+
* never a border on the image itself). Also used as the fallback ring for a
|
|
187
|
+
* squircle avatar when react-native-svg is unavailable.
|
|
188
|
+
*/
|
|
189
|
+
function CircleLiveRing({
|
|
190
|
+
radius,
|
|
191
|
+
color,
|
|
192
|
+
borderWidth
|
|
193
|
+
}) {
|
|
194
|
+
return /*#__PURE__*/_jsx(View, {
|
|
195
|
+
style: [StyleSheet.absoluteFill, {
|
|
196
|
+
borderRadius: radius,
|
|
197
|
+
borderColor: color,
|
|
198
|
+
borderWidth,
|
|
199
|
+
zIndex: Z_INDEX.raised,
|
|
200
|
+
pointerEvents: 'none'
|
|
201
|
+
}]
|
|
202
|
+
});
|
|
203
|
+
}
|
|
154
204
|
const AvatarComponent = ({
|
|
155
205
|
source,
|
|
156
206
|
uri,
|
|
@@ -166,6 +216,10 @@ const AvatarComponent = ({
|
|
|
166
216
|
placeholderIcon,
|
|
167
217
|
name,
|
|
168
218
|
onPress,
|
|
219
|
+
live = false,
|
|
220
|
+
hideLiveBadge = false,
|
|
221
|
+
liveLabel = 'LIVE',
|
|
222
|
+
liveColor,
|
|
169
223
|
testID
|
|
170
224
|
}) => {
|
|
171
225
|
const [errored, setErrored] = useState(false);
|
|
@@ -222,6 +276,21 @@ const AvatarComponent = ({
|
|
|
222
276
|
if (resolvedImageSource) return resolvedImageSource;
|
|
223
277
|
return fallbackSource;
|
|
224
278
|
}, [effectiveUri, resolvedImageSource, fallbackSource]);
|
|
279
|
+
|
|
280
|
+
// Live indicator (modeled on Bluesky): a solid ring around the avatar plus,
|
|
281
|
+
// unless suppressed, a "LIVE" pill hanging off the bottom-center. Colors come
|
|
282
|
+
// from the theme (`negative` / `negativeForeground`) with an optional
|
|
283
|
+
// `liveColor` override. The badge is only shown for `size > 16`.
|
|
284
|
+
const liveRingColor = liveColor ?? theme.colors.negative;
|
|
285
|
+
const liveBorderWidth = size > 16 ? 2 : 1;
|
|
286
|
+
const liveRing = live ? {
|
|
287
|
+
color: liveRingColor,
|
|
288
|
+
// The squircle path is in 0–1 space; center-stroking it and letting the
|
|
289
|
+
// viewport clip the outer half yields a ~`liveBorderWidth`-px inset ring.
|
|
290
|
+
strokeWidth: liveBorderWidth / size * 2,
|
|
291
|
+
borderWidth: liveBorderWidth
|
|
292
|
+
} : undefined;
|
|
293
|
+
const showLiveBadge = live && size > 16 && !hideLiveBadge;
|
|
225
294
|
const content = /*#__PURE__*/_jsxs(View, {
|
|
226
295
|
style: [styles.container, {
|
|
227
296
|
width: size,
|
|
@@ -235,7 +304,8 @@ const AvatarComponent = ({
|
|
|
235
304
|
fallbackColor: fallbackColor,
|
|
236
305
|
placeholderIcon: resolvedPlaceholderIcon,
|
|
237
306
|
name: name,
|
|
238
|
-
onError: () => setErrored(true)
|
|
307
|
+
onError: () => setErrored(true),
|
|
308
|
+
liveRing: liveRing
|
|
239
309
|
}) : /*#__PURE__*/_jsx(View, {
|
|
240
310
|
style: [styles.imageContainer, {
|
|
241
311
|
width: size,
|
|
@@ -255,12 +325,21 @@ const AvatarComponent = ({
|
|
|
255
325
|
icon: resolvedPlaceholderIcon,
|
|
256
326
|
name: name
|
|
257
327
|
})
|
|
328
|
+
}), live && shape !== 'squircle' && /*#__PURE__*/_jsx(CircleLiveRing, {
|
|
329
|
+
radius: radius,
|
|
330
|
+
color: liveRingColor,
|
|
331
|
+
borderWidth: liveBorderWidth
|
|
258
332
|
}), verified && verifiedIcon && /*#__PURE__*/_jsx(View, {
|
|
259
333
|
style: [styles.verifiedBadge, {
|
|
260
334
|
width: size * 0.36,
|
|
261
335
|
height: size * 0.36
|
|
262
336
|
}],
|
|
263
337
|
children: verifiedIcon
|
|
338
|
+
}), showLiveBadge && /*#__PURE__*/_jsx(LiveBadge, {
|
|
339
|
+
variant: size > 32 ? 'small' : 'tiny',
|
|
340
|
+
label: liveLabel,
|
|
341
|
+
backgroundColor: liveRingColor,
|
|
342
|
+
textColor: theme.colors.negativeForeground
|
|
264
343
|
})]
|
|
265
344
|
});
|
|
266
345
|
if (onPress) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","useMemo","useRef","useState","View","Image","StyleSheet","Text","TouchableOpacity","useTheme","useImageResolver","Z_INDEX","lazyRequire","useAvatarPlaceholder","NAME_AVATAR_COLORS","getInitial","name","trimmed","trim","firstCodePoint","toUpperCase","getNameColor","hash","i","length","charCodeAt","index","Math","abs","DEFAULT_AVATAR_IMAGE","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SQUIRCLE_PATH","clipIdCounter","getSvgModule","SquircleImage","uri","fallbackSource","size","fallbackColor","placeholderIcon","onError","svg","CircleFallback","icon","default","Svg","Defs","ClipPath","Path","SvgImage","clipId","href","children","source","style","styles","errorDetector","width","height","viewBox","id","d","preserveAspectRatio","clipPath","radius","hasName","initialStyle","color","fontSize","round","fontWeight","lineHeight","textAlign","includeFontPadding","borderRadius","backgroundColor","justifyContent","alignItems","overflow","allowFontScaling","numberOfLines","resizeMode","AvatarComponent","variant","verified","verifiedIcon","shape","imageStyle","placeholderColor","onPress","testID","errored","setErrored","theme","placeholderConfig","colors","backgroundTertiary","resolvedPlaceholderIcon","undefined","prevSourceRef","prevUriRef","prevVariantRef","current","imageResolver","resolvedUri","startsWith","resolvedImageSource","effectiveUri","imageSource","content","container","imageContainer","absoluteFill","verifiedBadge","create","position","bottom","right","zIndex","raised","opacity","Avatar","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","memo","useMemo","useRef","useState","View","Image","StyleSheet","Text","TouchableOpacity","useTheme","useImageResolver","Z_INDEX","lazyRequire","useAvatarPlaceholder","LiveBadge","NAME_AVATAR_COLORS","getInitial","name","trimmed","trim","firstCodePoint","toUpperCase","getNameColor","hash","i","length","charCodeAt","index","Math","abs","DEFAULT_AVATAR_IMAGE","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","SQUIRCLE_PATH","clipIdCounter","getSvgModule","SquircleImage","uri","fallbackSource","size","fallbackColor","placeholderIcon","onError","liveRing","svg","children","CircleFallback","icon","CircleLiveRing","radius","color","borderWidth","default","Svg","Defs","ClipPath","Path","SvgImage","clipId","href","source","style","styles","errorDetector","width","height","viewBox","id","d","preserveAspectRatio","clipPath","fill","stroke","strokeWidth","hasName","initialStyle","fontSize","round","fontWeight","lineHeight","textAlign","includeFontPadding","borderRadius","backgroundColor","justifyContent","alignItems","overflow","allowFontScaling","numberOfLines","resizeMode","absoluteFill","borderColor","zIndex","raised","pointerEvents","AvatarComponent","variant","verified","verifiedIcon","shape","imageStyle","placeholderColor","onPress","live","hideLiveBadge","liveLabel","liveColor","testID","errored","setErrored","theme","placeholderConfig","colors","backgroundTertiary","resolvedPlaceholderIcon","undefined","prevSourceRef","prevUriRef","prevVariantRef","current","imageResolver","resolvedUri","startsWith","resolvedImageSource","effectiveUri","imageSource","liveRingColor","negative","liveBorderWidth","showLiveBadge","content","container","imageContainer","verifiedBadge","label","textColor","negativeForeground","create","position","bottom","right","opacity","Avatar","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo } from 'react';
|
|
4
|
+
import { View, Text, StyleSheet } from 'react-native';
|
|
5
|
+
import { Z_INDEX } from "../styles/z-index.js";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
/**
|
|
8
|
+
* Small red "LIVE" pill that hangs off the bottom-center of an Avatar. Internal
|
|
9
|
+
* to the avatar family — not exported from the package. Modeled on Bluesky's
|
|
10
|
+
* live indicator: full-width absolute wrapper, center-aligned, `bottom: -5` so
|
|
11
|
+
* the pill protrudes below the avatar (the Avatar container is `overflow:
|
|
12
|
+
* 'visible'`).
|
|
13
|
+
*/
|
|
14
|
+
const LiveBadgeComponent = ({
|
|
15
|
+
variant,
|
|
16
|
+
label,
|
|
17
|
+
backgroundColor,
|
|
18
|
+
textColor
|
|
19
|
+
}) => {
|
|
20
|
+
return /*#__PURE__*/_jsx(View, {
|
|
21
|
+
style: styles.wrapper,
|
|
22
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
23
|
+
style: [styles.pill, {
|
|
24
|
+
backgroundColor
|
|
25
|
+
}],
|
|
26
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
27
|
+
allowFontScaling: false,
|
|
28
|
+
numberOfLines: 1,
|
|
29
|
+
style: [styles.text, {
|
|
30
|
+
color: textColor,
|
|
31
|
+
fontSize: variant === 'small' ? 10 : 7
|
|
32
|
+
}],
|
|
33
|
+
children: label
|
|
34
|
+
})
|
|
35
|
+
})
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
const styles = StyleSheet.create({
|
|
39
|
+
wrapper: {
|
|
40
|
+
position: 'absolute',
|
|
41
|
+
bottom: -5,
|
|
42
|
+
left: 0,
|
|
43
|
+
right: 0,
|
|
44
|
+
alignItems: 'center',
|
|
45
|
+
zIndex: Z_INDEX.raised,
|
|
46
|
+
pointerEvents: 'none'
|
|
47
|
+
},
|
|
48
|
+
pill: {
|
|
49
|
+
paddingVertical: 1,
|
|
50
|
+
paddingHorizontal: 3,
|
|
51
|
+
borderRadius: 4
|
|
52
|
+
},
|
|
53
|
+
text: {
|
|
54
|
+
fontWeight: '600',
|
|
55
|
+
textAlign: 'center'
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
export const LiveBadge = /*#__PURE__*/memo(LiveBadgeComponent);
|
|
59
|
+
LiveBadge.displayName = 'LiveBadge';
|
|
60
|
+
//# sourceMappingURL=LiveBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","View","Text","StyleSheet","Z_INDEX","jsx","_jsx","LiveBadgeComponent","variant","label","backgroundColor","textColor","style","styles","wrapper","children","pill","allowFontScaling","numberOfLines","text","color","fontSize","create","position","bottom","left","right","alignItems","zIndex","raised","pointerEvents","paddingVertical","paddingHorizontal","borderRadius","fontWeight","textAlign","LiveBadge","displayName"],"sourceRoot":"../../../src","sources":["avatar/LiveBadge.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,IAAI,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAErD,SAASC,OAAO,QAAQ,sBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAe5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,kBAA4C,GAAGA,CAAC;EACpDC,OAAO;EACPC,KAAK;EACLC,eAAe;EACfC;AACF,CAAC,KAAK;EACJ,oBACEL,IAAA,CAACL,IAAI;IAACW,KAAK,EAAEC,MAAM,CAACC,OAAQ;IAAAC,QAAA,eAC1BT,IAAA,CAACL,IAAI;MAACW,KAAK,EAAE,CAACC,MAAM,CAACG,IAAI,EAAE;QAAEN;MAAgB,CAAC,CAAE;MAAAK,QAAA,eAC9CT,IAAA,CAACJ,IAAI;QACHe,gBAAgB,EAAE,KAAM;QACxBC,aAAa,EAAE,CAAE;QACjBN,KAAK,EAAE,CACLC,MAAM,CAACM,IAAI,EACX;UAAEC,KAAK,EAAET,SAAS;UAAEU,QAAQ,EAAEb,OAAO,KAAK,OAAO,GAAG,EAAE,GAAG;QAAE,CAAC,CAC5D;QAAAO,QAAA,EAEDN;MAAK,CACF;IAAC,CACH;EAAC,CACH,CAAC;AAEX,CAAC;AAED,MAAMI,MAAM,GAAGV,UAAU,CAACmB,MAAM,CAAC;EAC/BR,OAAO,EAAE;IACPS,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,CAAC,CAAC;IACVC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,UAAU,EAAE,QAAQ;IACpBC,MAAM,EAAExB,OAAO,CAACyB,MAAM;IACtBC,aAAa,EAAE;EACjB,CAAC;EACDd,IAAI,EAAE;IACJe,eAAe,EAAE,CAAC;IAClBC,iBAAiB,EAAE,CAAC;IACpBC,YAAY,EAAE;EAChB,CAAC;EACDd,IAAI,EAAE;IACJe,UAAU,EAAE,KAAK;IACjBC,SAAS,EAAE;EACb;AACF,CAAC,CAAC;AAEF,OAAO,MAAMC,SAAS,gBAAGpC,IAAI,CAACO,kBAAkB,CAAC;AACjD6B,SAAS,CAACC,WAAW,GAAG,WAAW","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAU/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA+a3C,eAAO,MAAM,MAAM,yCAAwB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type LiveBadgeVariant = 'tiny' | 'small';
|
|
3
|
+
interface LiveBadgeProps {
|
|
4
|
+
/** Size variant — `'tiny'` for small avatars, `'small'` for larger ones. */
|
|
5
|
+
variant: LiveBadgeVariant;
|
|
6
|
+
/** Text shown inside the pill (already localized by the caller). */
|
|
7
|
+
label: string;
|
|
8
|
+
/** Pill background color (defaults come from the theme `negative` token). */
|
|
9
|
+
backgroundColor: string;
|
|
10
|
+
/** Pill text color (defaults come from the theme `negativeForeground` token). */
|
|
11
|
+
textColor: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const LiveBadge: React.NamedExoticComponent<LiveBadgeProps>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=LiveBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveBadge.d.ts","sourceRoot":"","sources":["../../../../src/avatar/LiveBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAKpC,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhD,UAAU,cAAc;IACtB,4EAA4E;IAC5E,OAAO,EAAE,gBAAgB,CAAC;IAC1B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;CACnB;AAsDD,eAAO,MAAM,SAAS,4CAA2B,CAAC"}
|
|
@@ -45,6 +45,27 @@ export interface AvatarProps {
|
|
|
45
45
|
name?: string;
|
|
46
46
|
/** Press handler — wraps avatar in TouchableOpacity when provided */
|
|
47
47
|
onPress?: () => void;
|
|
48
|
+
/**
|
|
49
|
+
* When true, marks the user as live-streaming: draws a solid red ring that
|
|
50
|
+
* overlays the avatar edge and, unless `hideLiveBadge` is set, a small red
|
|
51
|
+
* "LIVE" pill hanging off the bottom-center. Static (no animation). The badge
|
|
52
|
+
* is only shown for `size > 16`.
|
|
53
|
+
*/
|
|
54
|
+
live?: boolean;
|
|
55
|
+
/** Suppress the "LIVE" pill badge while keeping the live ring (ring only). */
|
|
56
|
+
hideLiveBadge?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Text shown inside the live badge. Defaults to `'LIVE'`. Provide a localized
|
|
59
|
+
* string for i18n — keep it extremely short (≈4 characters) as there is very
|
|
60
|
+
* little room.
|
|
61
|
+
*/
|
|
62
|
+
liveLabel?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Override color for the live ring and badge background. Defaults to the theme
|
|
65
|
+
* `negative` token. Prefer the theme default; only override for brand-specific
|
|
66
|
+
* live treatments.
|
|
67
|
+
*/
|
|
68
|
+
liveColor?: string;
|
|
48
69
|
testID?: string;
|
|
49
70
|
}
|
|
50
71
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/avatar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1F,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IAC7C,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8FAA8F;IAC9F,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,wFAAwF;IACxF,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,sBAAsB;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,sCAAsC;IACtC,UAAU,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oFAAoF;IACpF,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/avatar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1F,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IAC7C,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8FAA8F;IAC9F,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,wFAAwF;IACxF,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,sBAAsB;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,sCAAsC;IACtC,UAAU,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oFAAoF;IACpF,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAU/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA+a3C,eAAO,MAAM,MAAM,yCAAwB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type LiveBadgeVariant = 'tiny' | 'small';
|
|
3
|
+
interface LiveBadgeProps {
|
|
4
|
+
/** Size variant — `'tiny'` for small avatars, `'small'` for larger ones. */
|
|
5
|
+
variant: LiveBadgeVariant;
|
|
6
|
+
/** Text shown inside the pill (already localized by the caller). */
|
|
7
|
+
label: string;
|
|
8
|
+
/** Pill background color (defaults come from the theme `negative` token). */
|
|
9
|
+
backgroundColor: string;
|
|
10
|
+
/** Pill text color (defaults come from the theme `negativeForeground` token). */
|
|
11
|
+
textColor: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const LiveBadge: React.NamedExoticComponent<LiveBadgeProps>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=LiveBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveBadge.d.ts","sourceRoot":"","sources":["../../../../src/avatar/LiveBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAKpC,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhD,UAAU,cAAc;IACtB,4EAA4E;IAC5E,OAAO,EAAE,gBAAgB,CAAC;IAC1B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;CACnB;AAsDD,eAAO,MAAM,SAAS,4CAA2B,CAAC"}
|
|
@@ -45,6 +45,27 @@ export interface AvatarProps {
|
|
|
45
45
|
name?: string;
|
|
46
46
|
/** Press handler — wraps avatar in TouchableOpacity when provided */
|
|
47
47
|
onPress?: () => void;
|
|
48
|
+
/**
|
|
49
|
+
* When true, marks the user as live-streaming: draws a solid red ring that
|
|
50
|
+
* overlays the avatar edge and, unless `hideLiveBadge` is set, a small red
|
|
51
|
+
* "LIVE" pill hanging off the bottom-center. Static (no animation). The badge
|
|
52
|
+
* is only shown for `size > 16`.
|
|
53
|
+
*/
|
|
54
|
+
live?: boolean;
|
|
55
|
+
/** Suppress the "LIVE" pill badge while keeping the live ring (ring only). */
|
|
56
|
+
hideLiveBadge?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Text shown inside the live badge. Defaults to `'LIVE'`. Provide a localized
|
|
59
|
+
* string for i18n — keep it extremely short (≈4 characters) as there is very
|
|
60
|
+
* little room.
|
|
61
|
+
*/
|
|
62
|
+
liveLabel?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Override color for the live ring and badge background. Defaults to the theme
|
|
65
|
+
* `negative` token. Prefer the theme default; only override for brand-specific
|
|
66
|
+
* live treatments.
|
|
67
|
+
*/
|
|
68
|
+
liveColor?: string;
|
|
48
69
|
testID?: string;
|
|
49
70
|
}
|
|
50
71
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/avatar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1F,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IAC7C,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8FAA8F;IAC9F,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,wFAAwF;IACxF,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,sBAAsB;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,sCAAsC;IACtC,UAAU,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oFAAoF;IACpF,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/avatar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1F,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IAC7C,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8FAA8F;IAC9F,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,wFAAwF;IACxF,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,sBAAsB;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,sCAAsC;IACtC,UAAU,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oFAAoF;IACpF,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
package/package.json
CHANGED
|
@@ -3,6 +3,7 @@ import { View } from 'react-native';
|
|
|
3
3
|
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
4
4
|
|
|
5
5
|
import { Avatar } from './Avatar';
|
|
6
|
+
import { Verified_Stroke2_Corner2_Rounded } from '../icons/Verified';
|
|
6
7
|
|
|
7
8
|
const meta: Meta<typeof Avatar> = {
|
|
8
9
|
title: 'Components/Avatar',
|
|
@@ -16,6 +17,8 @@ const meta: Meta<typeof Avatar> = {
|
|
|
16
17
|
options: ['circle', 'squircle'],
|
|
17
18
|
},
|
|
18
19
|
verified: { control: 'boolean' },
|
|
20
|
+
live: { control: 'boolean' },
|
|
21
|
+
hideLiveBadge: { control: 'boolean' },
|
|
19
22
|
},
|
|
20
23
|
};
|
|
21
24
|
|
|
@@ -67,3 +70,51 @@ export const Composition: Story = {
|
|
|
67
70
|
</View>
|
|
68
71
|
),
|
|
69
72
|
};
|
|
73
|
+
|
|
74
|
+
export const LiveCircle: Story = {
|
|
75
|
+
args: { size: 72, uri: SAMPLE_URI, live: true },
|
|
76
|
+
name: 'Live (circle)',
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export const LiveSquircle: Story = {
|
|
80
|
+
args: { size: 72, uri: SAMPLE_URI, live: true, shape: 'squircle' },
|
|
81
|
+
name: 'Live (squircle)',
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export const LiveSmall: Story = {
|
|
85
|
+
// size <= 32 → tiny badge variant
|
|
86
|
+
args: { size: 28, uri: SAMPLE_URI, live: true },
|
|
87
|
+
name: 'Live (small · tiny badge)',
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export const LiveRingOnly: Story = {
|
|
91
|
+
args: { size: 72, uri: SAMPLE_URI, live: true, hideLiveBadge: true },
|
|
92
|
+
name: 'Live + hideLiveBadge (ring only)',
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export const LiveVerified: Story = {
|
|
96
|
+
args: {
|
|
97
|
+
size: 72,
|
|
98
|
+
uri: SAMPLE_URI,
|
|
99
|
+
live: true,
|
|
100
|
+
verified: true,
|
|
101
|
+
verifiedIcon: (
|
|
102
|
+
<Verified_Stroke2_Corner2_Rounded size="lg" fill="#1D9BF0" />
|
|
103
|
+
),
|
|
104
|
+
},
|
|
105
|
+
name: 'Live + verified',
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export const LiveGallery: Story = {
|
|
109
|
+
render: () => (
|
|
110
|
+
<View style={{ flexDirection: 'row', gap: 20, alignItems: 'center' }}>
|
|
111
|
+
<Avatar size={24} uri={SAMPLE_URI} live />
|
|
112
|
+
<Avatar size={32} uri={SAMPLE_URI} live />
|
|
113
|
+
<Avatar size={48} uri={SAMPLE_URI} live />
|
|
114
|
+
<Avatar size={72} uri={SAMPLE_URI} live />
|
|
115
|
+
<Avatar size={72} uri={SAMPLE_URI} live shape="squircle" />
|
|
116
|
+
<Avatar size={72} uri={SAMPLE_URI} live liveLabel="EN VIVO" />
|
|
117
|
+
</View>
|
|
118
|
+
),
|
|
119
|
+
name: 'Live (gallery)',
|
|
120
|
+
};
|
package/src/avatar/Avatar.tsx
CHANGED
|
@@ -7,6 +7,7 @@ import { useImageResolver } from '../image-resolver/context';
|
|
|
7
7
|
import { Z_INDEX } from '../styles/z-index';
|
|
8
8
|
import { lazyRequire } from '../utils/lazy-require';
|
|
9
9
|
import { useAvatarPlaceholder } from './placeholder-context';
|
|
10
|
+
import { LiveBadge } from './LiveBadge';
|
|
10
11
|
import type { AvatarProps } from './types';
|
|
11
12
|
|
|
12
13
|
// Google Contacts-inspired palette used to pick a deterministic background
|
|
@@ -53,6 +54,18 @@ let clipIdCounter = 0;
|
|
|
53
54
|
type SvgModuleType = typeof import('react-native-svg');
|
|
54
55
|
const getSvgModule = lazyRequire<SvgModuleType>('react-native-svg');
|
|
55
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Live-ring drawing config passed down to shape renderers.
|
|
59
|
+
* - `color`: resolved ring color (theme `negative` or `liveColor` override).
|
|
60
|
+
* - `strokeWidth`: stroke width in the squircle's 0–1 path coordinate space.
|
|
61
|
+
* - `borderWidth`: ring border width in pixels for the circle fallback.
|
|
62
|
+
*/
|
|
63
|
+
interface LiveRingConfig {
|
|
64
|
+
color: string;
|
|
65
|
+
strokeWidth: number;
|
|
66
|
+
borderWidth: number;
|
|
67
|
+
}
|
|
68
|
+
|
|
56
69
|
function SquircleImage({
|
|
57
70
|
uri,
|
|
58
71
|
fallbackSource,
|
|
@@ -61,6 +74,7 @@ function SquircleImage({
|
|
|
61
74
|
placeholderIcon,
|
|
62
75
|
name,
|
|
63
76
|
onError,
|
|
77
|
+
liveRing,
|
|
64
78
|
}: {
|
|
65
79
|
uri?: string;
|
|
66
80
|
fallbackSource?: AvatarProps['fallbackSource'];
|
|
@@ -69,11 +83,20 @@ function SquircleImage({
|
|
|
69
83
|
placeholderIcon?: React.ReactNode;
|
|
70
84
|
name?: string;
|
|
71
85
|
onError: () => void;
|
|
86
|
+
liveRing?: LiveRingConfig;
|
|
72
87
|
}) {
|
|
73
88
|
const svg = getSvgModule();
|
|
74
89
|
if (!svg) {
|
|
75
|
-
// Fallback to circle if react-native-svg is not installed
|
|
76
|
-
|
|
90
|
+
// Fallback to circle if react-native-svg is not installed. The circle
|
|
91
|
+
// fallback also gets a circle live ring (matching its rendered shape).
|
|
92
|
+
return (
|
|
93
|
+
<>
|
|
94
|
+
<CircleFallback size={size} fallbackColor={fallbackColor} icon={placeholderIcon} name={name} />
|
|
95
|
+
{liveRing && (
|
|
96
|
+
<CircleLiveRing radius={size / 2} color={liveRing.color} borderWidth={liveRing.borderWidth} />
|
|
97
|
+
)}
|
|
98
|
+
</>
|
|
99
|
+
);
|
|
77
100
|
}
|
|
78
101
|
|
|
79
102
|
const { default: Svg, Defs, ClipPath, Path, Image: SvgImage } = svg;
|
|
@@ -81,7 +104,14 @@ function SquircleImage({
|
|
|
81
104
|
|
|
82
105
|
const href = uri ? { uri } : fallbackSource;
|
|
83
106
|
if (!href) {
|
|
84
|
-
return
|
|
107
|
+
return (
|
|
108
|
+
<>
|
|
109
|
+
<CircleFallback size={size} fallbackColor={fallbackColor} icon={placeholderIcon} name={name} />
|
|
110
|
+
{liveRing && (
|
|
111
|
+
<CircleLiveRing radius={size / 2} color={liveRing.color} borderWidth={liveRing.borderWidth} />
|
|
112
|
+
)}
|
|
113
|
+
</>
|
|
114
|
+
);
|
|
85
115
|
}
|
|
86
116
|
|
|
87
117
|
return (
|
|
@@ -107,6 +137,18 @@ function SquircleImage({
|
|
|
107
137
|
preserveAspectRatio="xMidYMid slice"
|
|
108
138
|
clipPath={`url(#${clipId})`}
|
|
109
139
|
/>
|
|
140
|
+
{/* Live ring: the squircle outline stroked in the ring color. The
|
|
141
|
+
path lives in 0–1 space, so the stroke width is expressed in the
|
|
142
|
+
same units; the outer half is clipped by the SVG viewport, leaving
|
|
143
|
+
a ~borderWidth-px inset ring on the squircle edge. */}
|
|
144
|
+
{liveRing && (
|
|
145
|
+
<Path
|
|
146
|
+
d={SQUIRCLE_PATH}
|
|
147
|
+
fill="none"
|
|
148
|
+
stroke={liveRing.color}
|
|
149
|
+
strokeWidth={liveRing.strokeWidth}
|
|
150
|
+
/>
|
|
151
|
+
)}
|
|
110
152
|
</Svg>
|
|
111
153
|
</>
|
|
112
154
|
);
|
|
@@ -166,6 +208,37 @@ function CircleFallback({
|
|
|
166
208
|
);
|
|
167
209
|
}
|
|
168
210
|
|
|
211
|
+
/**
|
|
212
|
+
* Solid live ring for circular avatars — an absolutely-positioned inset-0
|
|
213
|
+
* overlay whose border overlays the avatar edge (drawn on top of the image,
|
|
214
|
+
* never a border on the image itself). Also used as the fallback ring for a
|
|
215
|
+
* squircle avatar when react-native-svg is unavailable.
|
|
216
|
+
*/
|
|
217
|
+
function CircleLiveRing({
|
|
218
|
+
radius,
|
|
219
|
+
color,
|
|
220
|
+
borderWidth,
|
|
221
|
+
}: {
|
|
222
|
+
radius: number;
|
|
223
|
+
color: string;
|
|
224
|
+
borderWidth: number;
|
|
225
|
+
}) {
|
|
226
|
+
return (
|
|
227
|
+
<View
|
|
228
|
+
style={[
|
|
229
|
+
StyleSheet.absoluteFill,
|
|
230
|
+
{
|
|
231
|
+
borderRadius: radius,
|
|
232
|
+
borderColor: color,
|
|
233
|
+
borderWidth,
|
|
234
|
+
zIndex: Z_INDEX.raised,
|
|
235
|
+
pointerEvents: 'none',
|
|
236
|
+
},
|
|
237
|
+
]}
|
|
238
|
+
/>
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
|
|
169
242
|
const AvatarComponent: React.FC<AvatarProps> = ({
|
|
170
243
|
source,
|
|
171
244
|
uri,
|
|
@@ -181,6 +254,10 @@ const AvatarComponent: React.FC<AvatarProps> = ({
|
|
|
181
254
|
placeholderIcon,
|
|
182
255
|
name,
|
|
183
256
|
onPress,
|
|
257
|
+
live = false,
|
|
258
|
+
hideLiveBadge = false,
|
|
259
|
+
liveLabel = 'LIVE',
|
|
260
|
+
liveColor,
|
|
184
261
|
testID,
|
|
185
262
|
}) => {
|
|
186
263
|
const [errored, setErrored] = useState(false);
|
|
@@ -246,6 +323,23 @@ const AvatarComponent: React.FC<AvatarProps> = ({
|
|
|
246
323
|
return fallbackSource;
|
|
247
324
|
}, [effectiveUri, resolvedImageSource, fallbackSource]);
|
|
248
325
|
|
|
326
|
+
// Live indicator (modeled on Bluesky): a solid ring around the avatar plus,
|
|
327
|
+
// unless suppressed, a "LIVE" pill hanging off the bottom-center. Colors come
|
|
328
|
+
// from the theme (`negative` / `negativeForeground`) with an optional
|
|
329
|
+
// `liveColor` override. The badge is only shown for `size > 16`.
|
|
330
|
+
const liveRingColor = liveColor ?? theme.colors.negative;
|
|
331
|
+
const liveBorderWidth = size > 16 ? 2 : 1;
|
|
332
|
+
const liveRing: LiveRingConfig | undefined = live
|
|
333
|
+
? {
|
|
334
|
+
color: liveRingColor,
|
|
335
|
+
// The squircle path is in 0–1 space; center-stroking it and letting the
|
|
336
|
+
// viewport clip the outer half yields a ~`liveBorderWidth`-px inset ring.
|
|
337
|
+
strokeWidth: (liveBorderWidth / size) * 2,
|
|
338
|
+
borderWidth: liveBorderWidth,
|
|
339
|
+
}
|
|
340
|
+
: undefined;
|
|
341
|
+
const showLiveBadge = live && size > 16 && !hideLiveBadge;
|
|
342
|
+
|
|
249
343
|
const content = (
|
|
250
344
|
<View style={[styles.container, { width: size, height: size }, style]} testID={testID}>
|
|
251
345
|
{shape === 'squircle' ? (
|
|
@@ -257,6 +351,7 @@ const AvatarComponent: React.FC<AvatarProps> = ({
|
|
|
257
351
|
placeholderIcon={resolvedPlaceholderIcon}
|
|
258
352
|
name={name}
|
|
259
353
|
onError={() => setErrored(true)}
|
|
354
|
+
liveRing={liveRing}
|
|
260
355
|
/>
|
|
261
356
|
) : (
|
|
262
357
|
<View style={[styles.imageContainer, { width: size, height: size, borderRadius: radius }]}>
|
|
@@ -278,6 +373,12 @@ const AvatarComponent: React.FC<AvatarProps> = ({
|
|
|
278
373
|
</View>
|
|
279
374
|
)}
|
|
280
375
|
|
|
376
|
+
{/* Circle live ring — overlays the avatar edge. The squircle shape draws
|
|
377
|
+
its own ring inside SquircleImage (SVG path or circle fallback). */}
|
|
378
|
+
{live && shape !== 'squircle' && (
|
|
379
|
+
<CircleLiveRing radius={radius} color={liveRingColor} borderWidth={liveBorderWidth} />
|
|
380
|
+
)}
|
|
381
|
+
|
|
281
382
|
{verified && verifiedIcon && (
|
|
282
383
|
<View
|
|
283
384
|
style={[
|
|
@@ -291,6 +392,15 @@ const AvatarComponent: React.FC<AvatarProps> = ({
|
|
|
291
392
|
{verifiedIcon}
|
|
292
393
|
</View>
|
|
293
394
|
)}
|
|
395
|
+
|
|
396
|
+
{showLiveBadge && (
|
|
397
|
+
<LiveBadge
|
|
398
|
+
variant={size > 32 ? 'small' : 'tiny'}
|
|
399
|
+
label={liveLabel}
|
|
400
|
+
backgroundColor={liveRingColor}
|
|
401
|
+
textColor={theme.colors.negativeForeground}
|
|
402
|
+
/>
|
|
403
|
+
)}
|
|
294
404
|
</View>
|
|
295
405
|
);
|
|
296
406
|
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React, { memo } from 'react';
|
|
2
|
+
import { View, Text, StyleSheet } from 'react-native';
|
|
3
|
+
|
|
4
|
+
import { Z_INDEX } from '../styles/z-index';
|
|
5
|
+
|
|
6
|
+
export type LiveBadgeVariant = 'tiny' | 'small';
|
|
7
|
+
|
|
8
|
+
interface LiveBadgeProps {
|
|
9
|
+
/** Size variant — `'tiny'` for small avatars, `'small'` for larger ones. */
|
|
10
|
+
variant: LiveBadgeVariant;
|
|
11
|
+
/** Text shown inside the pill (already localized by the caller). */
|
|
12
|
+
label: string;
|
|
13
|
+
/** Pill background color (defaults come from the theme `negative` token). */
|
|
14
|
+
backgroundColor: string;
|
|
15
|
+
/** Pill text color (defaults come from the theme `negativeForeground` token). */
|
|
16
|
+
textColor: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Small red "LIVE" pill that hangs off the bottom-center of an Avatar. Internal
|
|
21
|
+
* to the avatar family — not exported from the package. Modeled on Bluesky's
|
|
22
|
+
* live indicator: full-width absolute wrapper, center-aligned, `bottom: -5` so
|
|
23
|
+
* the pill protrudes below the avatar (the Avatar container is `overflow:
|
|
24
|
+
* 'visible'`).
|
|
25
|
+
*/
|
|
26
|
+
const LiveBadgeComponent: React.FC<LiveBadgeProps> = ({
|
|
27
|
+
variant,
|
|
28
|
+
label,
|
|
29
|
+
backgroundColor,
|
|
30
|
+
textColor,
|
|
31
|
+
}) => {
|
|
32
|
+
return (
|
|
33
|
+
<View style={styles.wrapper}>
|
|
34
|
+
<View style={[styles.pill, { backgroundColor }]}>
|
|
35
|
+
<Text
|
|
36
|
+
allowFontScaling={false}
|
|
37
|
+
numberOfLines={1}
|
|
38
|
+
style={[
|
|
39
|
+
styles.text,
|
|
40
|
+
{ color: textColor, fontSize: variant === 'small' ? 10 : 7 },
|
|
41
|
+
]}
|
|
42
|
+
>
|
|
43
|
+
{label}
|
|
44
|
+
</Text>
|
|
45
|
+
</View>
|
|
46
|
+
</View>
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const styles = StyleSheet.create({
|
|
51
|
+
wrapper: {
|
|
52
|
+
position: 'absolute',
|
|
53
|
+
bottom: -5,
|
|
54
|
+
left: 0,
|
|
55
|
+
right: 0,
|
|
56
|
+
alignItems: 'center',
|
|
57
|
+
zIndex: Z_INDEX.raised,
|
|
58
|
+
pointerEvents: 'none',
|
|
59
|
+
},
|
|
60
|
+
pill: {
|
|
61
|
+
paddingVertical: 1,
|
|
62
|
+
paddingHorizontal: 3,
|
|
63
|
+
borderRadius: 4,
|
|
64
|
+
},
|
|
65
|
+
text: {
|
|
66
|
+
fontWeight: '600',
|
|
67
|
+
textAlign: 'center',
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
export const LiveBadge = memo(LiveBadgeComponent);
|
|
72
|
+
LiveBadge.displayName = 'LiveBadge';
|
package/src/avatar/types.ts
CHANGED
|
@@ -49,5 +49,26 @@ export interface AvatarProps {
|
|
|
49
49
|
name?: string;
|
|
50
50
|
/** Press handler — wraps avatar in TouchableOpacity when provided */
|
|
51
51
|
onPress?: () => void;
|
|
52
|
+
/**
|
|
53
|
+
* When true, marks the user as live-streaming: draws a solid red ring that
|
|
54
|
+
* overlays the avatar edge and, unless `hideLiveBadge` is set, a small red
|
|
55
|
+
* "LIVE" pill hanging off the bottom-center. Static (no animation). The badge
|
|
56
|
+
* is only shown for `size > 16`.
|
|
57
|
+
*/
|
|
58
|
+
live?: boolean;
|
|
59
|
+
/** Suppress the "LIVE" pill badge while keeping the live ring (ring only). */
|
|
60
|
+
hideLiveBadge?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Text shown inside the live badge. Defaults to `'LIVE'`. Provide a localized
|
|
63
|
+
* string for i18n — keep it extremely short (≈4 characters) as there is very
|
|
64
|
+
* little room.
|
|
65
|
+
*/
|
|
66
|
+
liveLabel?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Override color for the live ring and badge background. Defaults to the theme
|
|
69
|
+
* `negative` token. Prefer the theme default; only override for brand-specific
|
|
70
|
+
* live treatments.
|
|
71
|
+
*/
|
|
72
|
+
liveColor?: string;
|
|
52
73
|
testID?: string;
|
|
53
74
|
}
|