@oxyhq/bloom 0.1.16 → 0.1.18

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 (29) hide show
  1. package/lib/commonjs/avatar/Avatar.js +9 -3
  2. package/lib/commonjs/avatar/Avatar.js.map +1 -1
  3. package/lib/commonjs/avatar/default-avatar.jpg +0 -0
  4. package/lib/commonjs/avatar/index.js +10 -0
  5. package/lib/commonjs/avatar/index.js.map +1 -1
  6. package/lib/commonjs/avatar/placeholder-context.js +15 -0
  7. package/lib/commonjs/avatar/placeholder-context.js.map +1 -0
  8. package/lib/module/avatar/Avatar.js +9 -3
  9. package/lib/module/avatar/Avatar.js.map +1 -1
  10. package/lib/module/avatar/default-avatar.jpg +0 -0
  11. package/lib/module/avatar/index.js +3 -0
  12. package/lib/module/avatar/index.js.map +1 -1
  13. package/lib/module/avatar/placeholder-context.js +10 -0
  14. package/lib/module/avatar/placeholder-context.js.map +1 -0
  15. package/lib/typescript/commonjs/avatar/Avatar.d.ts.map +1 -1
  16. package/lib/typescript/commonjs/avatar/index.d.ts +4 -0
  17. package/lib/typescript/commonjs/avatar/index.d.ts.map +1 -1
  18. package/lib/typescript/commonjs/avatar/placeholder-context.d.ts +8 -0
  19. package/lib/typescript/commonjs/avatar/placeholder-context.d.ts.map +1 -0
  20. package/lib/typescript/module/avatar/Avatar.d.ts.map +1 -1
  21. package/lib/typescript/module/avatar/index.d.ts +4 -0
  22. package/lib/typescript/module/avatar/index.d.ts.map +1 -1
  23. package/lib/typescript/module/avatar/placeholder-context.d.ts +8 -0
  24. package/lib/typescript/module/avatar/placeholder-context.d.ts.map +1 -0
  25. package/package.json +1 -1
  26. package/src/avatar/Avatar.tsx +9 -3
  27. package/src/avatar/default-avatar.jpg +0 -0
  28. package/src/avatar/index.ts +5 -0
  29. package/src/avatar/placeholder-context.ts +16 -0
@@ -8,8 +8,12 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _useTheme = require("../theme/use-theme.js");
10
10
  var _context = require("../image-resolver/context.js");
11
+ var _placeholderContext = require("./placeholder-context.js");
11
12
  var _jsxRuntime = require("react/jsx-runtime");
12
13
  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); }
14
+ // Built-in default avatar image — used when no source, fallbackSource, or placeholderIcon is provided
15
+ const DEFAULT_AVATAR_IMAGE = require('./default-avatar.jpg');
16
+
13
17
  // Squircle clip path normalized to 0–1 coordinate space (viewBox="0 0 1 1").
14
18
  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';
15
19
  let clipIdCounter = 0;
@@ -129,8 +133,10 @@ const AvatarComponent = ({
129
133
  }) => {
130
134
  const [errored, setErrored] = (0, _react.useState)(false);
131
135
  const theme = (0, _useTheme.useTheme)();
136
+ const placeholderConfig = (0, _placeholderContext.useAvatarPlaceholder)();
132
137
  const radius = size / 2;
133
138
  const fallbackColor = placeholderColor || theme.colors.backgroundTertiary;
139
+ const resolvedPlaceholderIcon = placeholderIcon ?? placeholderConfig?.icon?.(size * 0.6);
134
140
 
135
141
  // Reset error state when source changes (e.g., list item recycling
136
142
  // or async URL resolution replacing an initial file ID).
@@ -168,7 +174,7 @@ const AvatarComponent = ({
168
174
  uri: effectiveUri
169
175
  };
170
176
  if (resolvedImageSource) return resolvedImageSource;
171
- return fallbackSource;
177
+ return fallbackSource || DEFAULT_AVATAR_IMAGE;
172
178
  }, [effectiveUri, resolvedImageSource, fallbackSource]);
173
179
  const content = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
174
180
  style: [styles.container, {
@@ -181,7 +187,7 @@ const AvatarComponent = ({
181
187
  fallbackSource: fallbackSource,
182
188
  size: size,
183
189
  fallbackColor: fallbackColor,
184
- placeholderIcon: placeholderIcon,
190
+ placeholderIcon: resolvedPlaceholderIcon,
185
191
  onError: () => setErrored(true)
186
192
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
187
193
  style: [styles.imageContainer, {
@@ -199,7 +205,7 @@ const AvatarComponent = ({
199
205
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(CircleFallback, {
200
206
  size: size,
201
207
  fallbackColor: fallbackColor,
202
- icon: placeholderIcon
208
+ icon: resolvedPlaceholderIcon
203
209
  })
204
210
  }), verified && verifiedIcon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
205
211
  style: [styles.verifiedBadge, {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SQUIRCLE_PATH","clipIdCounter","svgModule","svgModuleResolved","getSvgModule","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","View","borderRadius","backgroundColor","justifyContent","alignItems","overflow","AvatarComponent","verified","verifiedIcon","shape","imageStyle","placeholderColor","onPress","testID","errored","setErrored","useState","theme","useTheme","colors","backgroundTertiary","prevSourceRef","useRef","prevUriRef","current","imageResolver","useImageResolver","resolvedUri","startsWith","resolvedImageSource","undefined","effectiveUri","imageSource","content","container","imageContainer","resizeMode","StyleSheet","absoluteFillObject","verifiedBadge","TouchableOpacity","create","position","bottom","right","zIndex","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","_placeholderContext","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_AVATAR_IMAGE","SQUIRCLE_PATH","clipIdCounter","svgModule","svgModuleResolved","getSvgModule","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","View","borderRadius","backgroundColor","justifyContent","alignItems","overflow","AvatarComponent","verified","verifiedIcon","shape","imageStyle","placeholderColor","onPress","testID","errored","setErrored","useState","theme","useTheme","placeholderConfig","useAvatarPlaceholder","colors","backgroundTertiary","resolvedPlaceholderIcon","prevSourceRef","useRef","prevUriRef","current","imageResolver","useImageResolver","resolvedUri","startsWith","resolvedImageSource","undefined","effectiveUri","imageSource","content","container","imageContainer","resizeMode","StyleSheet","absoluteFillObject","verifiedBadge","TouchableOpacity","create","position","bottom","right","zIndex","opacity","Avatar","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
@@ -9,5 +9,15 @@ Object.defineProperty(exports, "Avatar", {
9
9
  return _Avatar.Avatar;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "AvatarPlaceholderProvider", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _placeholderContext.AvatarPlaceholderProvider;
16
+ }
17
+ });
18
+ exports.defaultAvatarSource = void 0;
12
19
  var _Avatar = require("./Avatar.js");
20
+ var _placeholderContext = require("./placeholder-context.js");
21
+ /** Default avatar placeholder image — use as `fallbackSource` on Avatar or in AvatarPlaceholderProvider */
22
+ const defaultAvatarSource = exports.defaultAvatarSource = require('./default-avatar.jpg');
13
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_Avatar","require"],"sourceRoot":"../../../src","sources":["avatar/index.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_Avatar","require","_placeholderContext","defaultAvatarSource","exports"],"sourceRoot":"../../../src","sources":["avatar/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AAIA;AACO,MAAME,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAGF,OAAO,CAAC,sBAAsB,CAAC","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AvatarPlaceholderProvider = void 0;
7
+ exports.useAvatarPlaceholder = useAvatarPlaceholder;
8
+ var _react = require("react");
9
+ const AvatarPlaceholderContext = /*#__PURE__*/(0, _react.createContext)(null);
10
+ AvatarPlaceholderContext.displayName = 'BloomAvatarPlaceholderContext';
11
+ const AvatarPlaceholderProvider = exports.AvatarPlaceholderProvider = AvatarPlaceholderContext.Provider;
12
+ function useAvatarPlaceholder() {
13
+ return (0, _react.useContext)(AvatarPlaceholderContext);
14
+ }
15
+ //# sourceMappingURL=placeholder-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","AvatarPlaceholderContext","createContext","displayName","AvatarPlaceholderProvider","exports","Provider","useAvatarPlaceholder","useContext"],"sourceRoot":"../../../src","sources":["avatar/placeholder-context.ts"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQA,MAAMC,wBAAwB,gBAAG,IAAAC,oBAAa,EAAiC,IAAI,CAAC;AACpFD,wBAAwB,CAACE,WAAW,GAAG,+BAA+B;AAE/D,MAAMC,yBAAyB,GAAAC,OAAA,CAAAD,yBAAA,GAAGH,wBAAwB,CAACK,QAAQ;AAEnE,SAASC,oBAAoBA,CAAA,EAAmC;EACrE,OAAO,IAAAC,iBAAU,EAACP,wBAAwB,CAAC;AAC7C","ignoreList":[]}
@@ -4,7 +4,11 @@ import React, { memo, useMemo, useRef, useState } from 'react';
4
4
  import { View, Image, StyleSheet, TouchableOpacity } from 'react-native';
5
5
  import { useTheme } from "../theme/use-theme.js";
6
6
  import { useImageResolver } from "../image-resolver/context.js";
7
+ import { useAvatarPlaceholder } from "./placeholder-context.js";
7
8
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
9
+ // Built-in default avatar image — used when no source, fallbackSource, or placeholderIcon is provided
10
+ const DEFAULT_AVATAR_IMAGE = require('./default-avatar.jpg');
11
+
8
12
  // Squircle clip path normalized to 0–1 coordinate space (viewBox="0 0 1 1").
9
13
  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';
10
14
  let clipIdCounter = 0;
@@ -124,8 +128,10 @@ const AvatarComponent = ({
124
128
  }) => {
125
129
  const [errored, setErrored] = useState(false);
126
130
  const theme = useTheme();
131
+ const placeholderConfig = useAvatarPlaceholder();
127
132
  const radius = size / 2;
128
133
  const fallbackColor = placeholderColor || theme.colors.backgroundTertiary;
134
+ const resolvedPlaceholderIcon = placeholderIcon ?? placeholderConfig?.icon?.(size * 0.6);
129
135
 
130
136
  // Reset error state when source changes (e.g., list item recycling
131
137
  // or async URL resolution replacing an initial file ID).
@@ -163,7 +169,7 @@ const AvatarComponent = ({
163
169
  uri: effectiveUri
164
170
  };
165
171
  if (resolvedImageSource) return resolvedImageSource;
166
- return fallbackSource;
172
+ return fallbackSource || DEFAULT_AVATAR_IMAGE;
167
173
  }, [effectiveUri, resolvedImageSource, fallbackSource]);
168
174
  const content = /*#__PURE__*/_jsxs(View, {
169
175
  style: [styles.container, {
@@ -176,7 +182,7 @@ const AvatarComponent = ({
176
182
  fallbackSource: fallbackSource,
177
183
  size: size,
178
184
  fallbackColor: fallbackColor,
179
- placeholderIcon: placeholderIcon,
185
+ placeholderIcon: resolvedPlaceholderIcon,
180
186
  onError: () => setErrored(true)
181
187
  }) : /*#__PURE__*/_jsx(View, {
182
188
  style: [styles.imageContainer, {
@@ -194,7 +200,7 @@ const AvatarComponent = ({
194
200
  }) : /*#__PURE__*/_jsx(CircleFallback, {
195
201
  size: size,
196
202
  fallbackColor: fallbackColor,
197
- icon: placeholderIcon
203
+ icon: resolvedPlaceholderIcon
198
204
  })
199
205
  }), verified && verifiedIcon && /*#__PURE__*/_jsx(View, {
200
206
  style: [styles.verifiedBadge, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useMemo","useRef","useState","View","Image","StyleSheet","TouchableOpacity","useTheme","useImageResolver","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SQUIRCLE_PATH","clipIdCounter","svgModule","svgModuleResolved","getSvgModule","require","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","borderRadius","backgroundColor","justifyContent","alignItems","overflow","AvatarComponent","verified","verifiedIcon","shape","imageStyle","placeholderColor","onPress","testID","errored","setErrored","theme","colors","backgroundTertiary","prevSourceRef","prevUriRef","current","imageResolver","resolvedUri","startsWith","resolvedImageSource","undefined","effectiveUri","imageSource","content","container","imageContainer","resizeMode","absoluteFillObject","verifiedBadge","create","position","bottom","right","zIndex","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","TouchableOpacity","useTheme","useImageResolver","useAvatarPlaceholder","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DEFAULT_AVATAR_IMAGE","require","SQUIRCLE_PATH","clipIdCounter","svgModule","svgModuleResolved","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","borderRadius","backgroundColor","justifyContent","alignItems","overflow","AvatarComponent","verified","verifiedIcon","shape","imageStyle","placeholderColor","onPress","testID","errored","setErrored","theme","placeholderConfig","colors","backgroundTertiary","resolvedPlaceholderIcon","prevSourceRef","prevUriRef","current","imageResolver","resolvedUri","startsWith","resolvedImageSource","undefined","effectiveUri","imageSource","content","container","imageContainer","resizeMode","absoluteFillObject","verifiedBadge","create","position","bottom","right","zIndex","opacity","Avatar","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC9D,SAASC,IAAI,EAAEC,KAAK,EAAEC,UAAU,EAAEC,gBAAgB,QAAQ,cAAc;AAExE,SAASC,QAAQ,QAAQ,uBAAoB;AAC7C,SAASC,gBAAgB,QAAQ,8BAA2B;AAC5D,SAASC,oBAAoB,QAAQ,0BAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAG7D;AACA,MAAMC,oBAAoB,GAAGC,OAAO,CAAC,sBAAsB,CAAC;;AAE5D;AACA,MAAMC,aAAa,GACjB,2PAA2P,GAC3P,gOAAgO,GAChO,gOAAgO,GAChO,iOAAiO;AAEnO,IAAIC,aAAa,GAAG,CAAC;;AAErB;AACA;;AAEA,IAAIC,SAA+B,GAAG,IAAI;AAC1C,IAAIC,iBAAiB,GAAG,KAAK;AAE7B,SAASC,YAAYA,CAAA,EAAyB;EAC5C,IAAI,CAACD,iBAAiB,EAAE;IACtBA,iBAAiB,GAAG,IAAI;IACxB,IAAI;MACFD,SAAS,GAAGH,OAAO,CAAC,kBAAkB,CAAC;IACzC,CAAC,CAAC,MAAM;MACNG,SAAS,GAAG,IAAI;IAClB;EACF;EACA,OAAOA,SAAS;AAClB;AAEA,SAASG,aAAaA,CAAC;EACrBC,GAAG;EACHC,cAAc;EACdC,IAAI;EACJC,aAAa;EACbC,eAAe;EACfC;AAQF,CAAC,EAAE;EACD,MAAMC,GAAG,GAAGR,YAAY,CAAC,CAAC;EAC1B,IAAI,CAACQ,GAAG,EAAE;IACR;IACA,oBAAOnB,IAAA,CAACoB,cAAc;MAACL,IAAI,EAAEA,IAAK;MAACC,aAAa,EAAEA,aAAc;MAACK,IAAI,EAAEJ;IAAgB,CAAE,CAAC;EAC5F;EAEA,MAAM;IAAEK,OAAO,EAAEC,GAAG;IAAEC,IAAI;IAAEC,QAAQ;IAAEC,IAAI;IAAEjC,KAAK,EAAEkC;EAAS,CAAC,GAAGR,GAAG;EACnE,MAAMS,MAAM,GAAGvC,OAAO,CAAC,MAAM,YAAYmB,aAAa,EAAE,EAAE,EAAE,EAAE,CAAC;EAE/D,MAAMqB,IAAI,GAAGhB,GAAG,GAAG;IAAEA;EAAI,CAAC,GAAGC,cAAc;EAC3C,IAAI,CAACe,IAAI,EAAE;IACT,oBAAO7B,IAAA,CAACoB,cAAc;MAACL,IAAI,EAAEA,IAAK;MAACC,aAAa,EAAEA,aAAc;MAACK,IAAI,EAAEJ;IAAgB,CAAE,CAAC;EAC5F;EAEA,oBACEf,KAAA,CAAAE,SAAA;IAAA0B,QAAA,GAEGjB,GAAG,iBACFb,IAAA,CAACP,KAAK;MACJsC,MAAM,EAAE;QAAElB;MAAI,CAAE;MAChBmB,KAAK,EAAEC,MAAM,CAACC,aAAc;MAC5BhB,OAAO,EAAEA;IAAQ,CAClB,CACF,eACDhB,KAAA,CAACqB,GAAG;MAACY,KAAK,EAAEpB,IAAK;MAACqB,MAAM,EAAErB,IAAK;MAACsB,OAAO,EAAC,SAAS;MAAAP,QAAA,gBAC/C9B,IAAA,CAACwB,IAAI;QAAAM,QAAA,eACH9B,IAAA,CAACyB,QAAQ;UAACa,EAAE,EAAEV,MAAO;UAAAE,QAAA,eACnB9B,IAAA,CAAC0B,IAAI;YAACa,CAAC,EAAEhC;UAAc,CAAE;QAAC,CAClB;MAAC,CACP,CAAC,eACPP,IAAA,CAAC2B,QAAQ;QACPE,IAAI,EAAEA,IAAK;QACXM,KAAK,EAAE,CAAE;QACTC,MAAM,EAAE,CAAE;QACVI,mBAAmB,EAAC,gBAAgB;QACpCC,QAAQ,EAAE,QAAQb,MAAM;MAAI,CAC7B,CAAC;IAAA,CACC,CAAC;EAAA,CACN,CAAC;AAEP;AAEA,SAASR,cAAcA,CAAC;EAAEL,IAAI;EAAEC,aAAa;EAAEK;AAAsE,CAAC,EAAE;EACtH,MAAMqB,MAAM,GAAG3B,IAAI,GAAG,CAAC;EACvB,oBACEf,IAAA,CAACR,IAAI;IACHwC,KAAK,EAAE;MACLG,KAAK,EAAEpB,IAAI;MACXqB,MAAM,EAAErB,IAAI;MACZ4B,YAAY,EAAED,MAAM;MACpBE,eAAe,EAAE5B,aAAa;MAC9B6B,cAAc,EAAE,QAAQ;MACxBC,UAAU,EAAE,QAAQ;MACpBC,QAAQ,EAAE;IACZ,CAAE;IAAAjB,QAAA,EAEDT,IAAI,IAAI;EAAI,CACT,CAAC;AAEX;AAEA,MAAM2B,eAAsC,GAAGA,CAAC;EAC9CjB,MAAM;EACNlB,GAAG;EACHC,cAAc;EACdC,IAAI,GAAG,EAAE;EACTkC,QAAQ,GAAG,KAAK;EAChBC,YAAY;EACZC,KAAK,GAAG,QAAQ;EAChBnB,KAAK;EACLoB,UAAU;EACVC,gBAAgB;EAChBpC,eAAe;EACfqC,OAAO;EACPC;AACF,CAAC,KAAK;EACJ,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGlE,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAMmE,KAAK,GAAG9D,QAAQ,CAAC,CAAC;EACxB,MAAM+D,iBAAiB,GAAG7D,oBAAoB,CAAC,CAAC;EAChD,MAAM4C,MAAM,GAAG3B,IAAI,GAAG,CAAC;EACvB,MAAMC,aAAa,GAAGqC,gBAAgB,IAAIK,KAAK,CAACE,MAAM,CAACC,kBAAkB;EACzE,MAAMC,uBAAuB,GAAG7C,eAAe,IAAI0C,iBAAiB,EAAEtC,IAAI,GAAGN,IAAI,GAAG,GAAG,CAAC;;EAExF;EACA;EACA;EACA,MAAMgD,aAAa,GAAGzE,MAAM,CAACyC,MAAM,CAAC;EACpC,MAAMiC,UAAU,GAAG1E,MAAM,CAACuB,GAAG,CAAC;EAC9B,IAAIkD,aAAa,CAACE,OAAO,KAAKlC,MAAM,IAAIiC,UAAU,CAACC,OAAO,KAAKpD,GAAG,EAAE;IAClEkD,aAAa,CAACE,OAAO,GAAGlC,MAAM;IAC9BiC,UAAU,CAACC,OAAO,GAAGpD,GAAG;IACxB,IAAI2C,OAAO,EAAE;MACXC,UAAU,CAAC,KAAK,CAAC;IACnB;EACF;EAEA,MAAMS,aAAa,GAAGrE,gBAAgB,CAAC,CAAC;;EAExC;EACA;EACA;EACA,MAAMsE,WAAW,GAAG9E,OAAO,CAAC,MAAM;IAChC,IAAI,OAAO0C,MAAM,KAAK,QAAQ,EAAE;MAC9B,IAAIA,MAAM,CAACqC,UAAU,CAAC,SAAS,CAAC,IAAIrC,MAAM,CAACqC,UAAU,CAAC,UAAU,CAAC,IAAIrC,MAAM,CAACqC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC/F,OAAOrC,MAAM;MACf;MACA,OAAOmC,aAAa,GAAGnC,MAAM,CAAC;IAChC;IACA,OAAOlB,GAAG;EACZ,CAAC,EAAE,CAACkB,MAAM,EAAElB,GAAG,EAAEqD,aAAa,CAAC,CAAC;EAEhC,MAAMG,mBAAmB,GAAGhF,OAAO,CAAC,MAAM;IACxC,IAAI0C,MAAM,IAAI,IAAI,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE,OAAOA,MAAM;IAC/D,OAAOuC,SAAS;EAClB,CAAC,EAAE,CAACvC,MAAM,CAAC,CAAC;EAEZ,MAAMwC,YAAY,GAAGf,OAAO,GAAGc,SAAS,GAAGH,WAAW;EAEtD,MAAMK,WAAW,GAAGnF,OAAO,CAAC,MAAM;IAChC,IAAIkF,YAAY,EAAE,OAAO;MAAE1D,GAAG,EAAE0D;IAAa,CAAC;IAC9C,IAAIF,mBAAmB,EAAE,OAAOA,mBAAmB;IACnD,OAAOvD,cAAc,IAAIT,oBAAoB;EAC/C,CAAC,EAAE,CAACkE,YAAY,EAAEF,mBAAmB,EAAEvD,cAAc,CAAC,CAAC;EAEvD,MAAM2D,OAAO,gBACXvE,KAAA,CAACV,IAAI;IAACwC,KAAK,EAAE,CAACC,MAAM,CAACyC,SAAS,EAAE;MAAEvC,KAAK,EAAEpB,IAAI;MAAEqB,MAAM,EAAErB;IAAK,CAAC,EAAEiB,KAAK,CAAE;IAACuB,MAAM,EAAEA,MAAO;IAAAzB,QAAA,GACnFqB,KAAK,KAAK,UAAU,gBACnBnD,IAAA,CAACY,aAAa;MACZC,GAAG,EAAE0D,YAAa;MAClBzD,cAAc,EAAEA,cAAe;MAC/BC,IAAI,EAAEA,IAAK;MACXC,aAAa,EAAEA,aAAc;MAC7BC,eAAe,EAAE6C,uBAAwB;MACzC5C,OAAO,EAAEA,CAAA,KAAMuC,UAAU,CAAC,IAAI;IAAE,CACjC,CAAC,gBAEFzD,IAAA,CAACR,IAAI;MAACwC,KAAK,EAAE,CAACC,MAAM,CAAC0C,cAAc,EAAE;QAAExC,KAAK,EAAEpB,IAAI;QAAEqB,MAAM,EAAErB,IAAI;QAAE4B,YAAY,EAAED;MAAO,CAAC,CAAE;MAAAZ,QAAA,EACvF0C,WAAW,gBACVxE,IAAA,CAACP,KAAK;QACJsC,MAAM,EAAEyC,WAAY;QACpBtD,OAAO,EAAEA,CAAA,KAAMuC,UAAU,CAAC,IAAI,CAAE;QAChCmB,UAAU,EAAC,OAAO;QAClB5C,KAAK,EAAE,CAACtC,UAAU,CAACmF,kBAAkB,EAAE;UAAElC,YAAY,EAAED;QAAO,CAAC,EAAEU,UAAU;MAAE,CAC9E,CAAC,gBAEFpD,IAAA,CAACoB,cAAc;QAACL,IAAI,EAAEA,IAAK;QAACC,aAAa,EAAEA,aAAc;QAACK,IAAI,EAAEyC;MAAwB,CAAE;IAC3F,CACG,CACP,EAEAb,QAAQ,IAAIC,YAAY,iBACvBlD,IAAA,CAACR,IAAI;MACHwC,KAAK,EAAE,CACLC,MAAM,CAAC6C,aAAa,EACpB;QACE3C,KAAK,EAAEpB,IAAI,GAAG,IAAI;QAClBqB,MAAM,EAAErB,IAAI,GAAG;MACjB,CAAC,CACD;MAAAe,QAAA,EAEDoB;IAAY,CACT,CACP;EAAA,CACG,CACP;EAED,IAAII,OAAO,EAAE;IACX,oBAAOtD,IAAA,CAACL,gBAAgB;MAAC2D,OAAO,EAAEA,OAAQ;MAAAxB,QAAA,EAAE2C;IAAO,CAAmB,CAAC;EACzE;EAEA,OAAOA,OAAO;AAChB,CAAC;AAED,MAAMxC,MAAM,GAAGvC,UAAU,CAACqF,MAAM,CAAC;EAC/BL,SAAS,EAAE;IACTM,QAAQ,EAAE,UAAU;IACpBjC,QAAQ,EAAE,SAAS;IACnBF,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACD6B,cAAc,EAAE;IACd5B,QAAQ,EAAE,QAAQ;IAClBF,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDgC,aAAa,EAAE;IACbE,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,CAAC,CAAC;IACVC,KAAK,EAAE,CAAC,CAAC;IACTrC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBqC,MAAM,EAAE;EACV,CAAC;EACDjD,aAAa,EAAE;IACb8C,QAAQ,EAAE,UAAU;IACpB7C,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTgD,OAAO,EAAE;EACX;AACF,CAAC,CAAC;AAEF,OAAO,MAAMC,MAAM,gBAAGjG,IAAI,CAAC4D,eAAe,CAAC;AAC3CqC,MAAM,CAACC,WAAW,GAAG,QAAQ","ignoreList":[]}
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  export { Avatar } from "./Avatar.js";
4
+ export { AvatarPlaceholderProvider } from "./placeholder-context.js";
5
+ /** Default avatar placeholder image — use as `fallbackSource` on Avatar or in AvatarPlaceholderProvider */
6
+ export const defaultAvatarSource = require('./default-avatar.jpg');
4
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Avatar"],"sourceRoot":"../../../src","sources":["avatar/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,aAAU","ignoreList":[]}
1
+ {"version":3,"names":["Avatar","AvatarPlaceholderProvider","defaultAvatarSource","require"],"sourceRoot":"../../../src","sources":["avatar/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,aAAU;AACjC,SAASC,yBAAyB,QAAQ,0BAAuB;AAIjE;AACA,OAAO,MAAMC,mBAAmB,GAAGC,OAAO,CAAC,sBAAsB,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ import { createContext, useContext } from 'react';
4
+ const AvatarPlaceholderContext = /*#__PURE__*/createContext(null);
5
+ AvatarPlaceholderContext.displayName = 'BloomAvatarPlaceholderContext';
6
+ export const AvatarPlaceholderProvider = AvatarPlaceholderContext.Provider;
7
+ export function useAvatarPlaceholder() {
8
+ return useContext(AvatarPlaceholderContext);
9
+ }
10
+ //# sourceMappingURL=placeholder-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","AvatarPlaceholderContext","displayName","AvatarPlaceholderProvider","Provider","useAvatarPlaceholder"],"sourceRoot":"../../../src","sources":["avatar/placeholder-context.ts"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAQjD,MAAMC,wBAAwB,gBAAGF,aAAa,CAAiC,IAAI,CAAC;AACpFE,wBAAwB,CAACC,WAAW,GAAG,+BAA+B;AAEtE,OAAO,MAAMC,yBAAyB,GAAGF,wBAAwB,CAACG,QAAQ;AAE1E,OAAO,SAASC,oBAAoBA,CAAA,EAAmC;EACrE,OAAOL,UAAU,CAACC,wBAAwB,CAAC;AAC7C","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAK/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAmP3C,eAAO,MAAM,MAAM,yCAAwB,CAAC"}
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAM/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAwP3C,eAAO,MAAM,MAAM,yCAAwB,CAAC"}
@@ -1,3 +1,7 @@
1
1
  export { Avatar } from './Avatar';
2
+ export { AvatarPlaceholderProvider } from './placeholder-context';
3
+ export type { AvatarPlaceholderConfig } from './placeholder-context';
2
4
  export type { AvatarProps, AvatarShape } from './types';
5
+ /** Default avatar placeholder image — use as `fallbackSource` on Avatar or in AvatarPlaceholderProvider */
6
+ export declare const defaultAvatarSource: any;
3
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/avatar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/avatar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExD,2GAA2G;AAC3G,eAAO,MAAM,mBAAmB,KAAkC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface AvatarPlaceholderConfig {
3
+ /** Default icon to render inside the placeholder circle */
4
+ icon?: (size: number) => ReactNode;
5
+ }
6
+ export declare const AvatarPlaceholderProvider: import("react").Provider<AvatarPlaceholderConfig | null>;
7
+ export declare function useAvatarPlaceholder(): AvatarPlaceholderConfig | null;
8
+ //# sourceMappingURL=placeholder-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeholder-context.d.ts","sourceRoot":"","sources":["../../../../src/avatar/placeholder-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;CACpC;AAKD,eAAO,MAAM,yBAAyB,0DAAoC,CAAC;AAE3E,wBAAgB,oBAAoB,IAAI,uBAAuB,GAAG,IAAI,CAErE"}
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAK/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAmP3C,eAAO,MAAM,MAAM,yCAAwB,CAAC"}
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAM/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAwP3C,eAAO,MAAM,MAAM,yCAAwB,CAAC"}
@@ -1,3 +1,7 @@
1
1
  export { Avatar } from './Avatar';
2
+ export { AvatarPlaceholderProvider } from './placeholder-context';
3
+ export type { AvatarPlaceholderConfig } from './placeholder-context';
2
4
  export type { AvatarProps, AvatarShape } from './types';
5
+ /** Default avatar placeholder image — use as `fallbackSource` on Avatar or in AvatarPlaceholderProvider */
6
+ export declare const defaultAvatarSource: any;
3
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/avatar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/avatar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExD,2GAA2G;AAC3G,eAAO,MAAM,mBAAmB,KAAkC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface AvatarPlaceholderConfig {
3
+ /** Default icon to render inside the placeholder circle */
4
+ icon?: (size: number) => ReactNode;
5
+ }
6
+ export declare const AvatarPlaceholderProvider: import("react").Provider<AvatarPlaceholderConfig | null>;
7
+ export declare function useAvatarPlaceholder(): AvatarPlaceholderConfig | null;
8
+ //# sourceMappingURL=placeholder-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeholder-context.d.ts","sourceRoot":"","sources":["../../../../src/avatar/placeholder-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;CACpC;AAKD,eAAO,MAAM,yBAAyB,0DAAoC,CAAC;AAE3E,wBAAgB,oBAAoB,IAAI,uBAAuB,GAAG,IAAI,CAErE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/bloom",
3
- "version": "0.1.16",
3
+ "version": "0.1.18",
4
4
  "description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -3,8 +3,12 @@ import { View, Image, StyleSheet, TouchableOpacity } from 'react-native';
3
3
 
4
4
  import { useTheme } from '../theme/use-theme';
5
5
  import { useImageResolver } from '../image-resolver/context';
6
+ import { useAvatarPlaceholder } from './placeholder-context';
6
7
  import type { AvatarProps } from './types';
7
8
 
9
+ // Built-in default avatar image — used when no source, fallbackSource, or placeholderIcon is provided
10
+ const DEFAULT_AVATAR_IMAGE = require('./default-avatar.jpg');
11
+
8
12
  // Squircle clip path normalized to 0–1 coordinate space (viewBox="0 0 1 1").
9
13
  const SQUIRCLE_PATH =
10
14
  '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' +
@@ -125,8 +129,10 @@ const AvatarComponent: React.FC<AvatarProps> = ({
125
129
  }) => {
126
130
  const [errored, setErrored] = useState(false);
127
131
  const theme = useTheme();
132
+ const placeholderConfig = useAvatarPlaceholder();
128
133
  const radius = size / 2;
129
134
  const fallbackColor = placeholderColor || theme.colors.backgroundTertiary;
135
+ const resolvedPlaceholderIcon = placeholderIcon ?? placeholderConfig?.icon?.(size * 0.6);
130
136
 
131
137
  // Reset error state when source changes (e.g., list item recycling
132
138
  // or async URL resolution replacing an initial file ID).
@@ -166,7 +172,7 @@ const AvatarComponent: React.FC<AvatarProps> = ({
166
172
  const imageSource = useMemo(() => {
167
173
  if (effectiveUri) return { uri: effectiveUri };
168
174
  if (resolvedImageSource) return resolvedImageSource;
169
- return fallbackSource;
175
+ return fallbackSource || DEFAULT_AVATAR_IMAGE;
170
176
  }, [effectiveUri, resolvedImageSource, fallbackSource]);
171
177
 
172
178
  const content = (
@@ -177,7 +183,7 @@ const AvatarComponent: React.FC<AvatarProps> = ({
177
183
  fallbackSource={fallbackSource}
178
184
  size={size}
179
185
  fallbackColor={fallbackColor}
180
- placeholderIcon={placeholderIcon}
186
+ placeholderIcon={resolvedPlaceholderIcon}
181
187
  onError={() => setErrored(true)}
182
188
  />
183
189
  ) : (
@@ -190,7 +196,7 @@ const AvatarComponent: React.FC<AvatarProps> = ({
190
196
  style={[StyleSheet.absoluteFillObject, { borderRadius: radius }, imageStyle]}
191
197
  />
192
198
  ) : (
193
- <CircleFallback size={size} fallbackColor={fallbackColor} icon={placeholderIcon} />
199
+ <CircleFallback size={size} fallbackColor={fallbackColor} icon={resolvedPlaceholderIcon} />
194
200
  )}
195
201
  </View>
196
202
  )}
Binary file
@@ -1,2 +1,7 @@
1
1
  export { Avatar } from './Avatar';
2
+ export { AvatarPlaceholderProvider } from './placeholder-context';
3
+ export type { AvatarPlaceholderConfig } from './placeholder-context';
2
4
  export type { AvatarProps, AvatarShape } from './types';
5
+
6
+ /** Default avatar placeholder image — use as `fallbackSource` on Avatar or in AvatarPlaceholderProvider */
7
+ export const defaultAvatarSource = require('./default-avatar.jpg');
@@ -0,0 +1,16 @@
1
+ import { createContext, useContext } from 'react';
2
+ import type { ReactNode } from 'react';
3
+
4
+ export interface AvatarPlaceholderConfig {
5
+ /** Default icon to render inside the placeholder circle */
6
+ icon?: (size: number) => ReactNode;
7
+ }
8
+
9
+ const AvatarPlaceholderContext = createContext<AvatarPlaceholderConfig | null>(null);
10
+ AvatarPlaceholderContext.displayName = 'BloomAvatarPlaceholderContext';
11
+
12
+ export const AvatarPlaceholderProvider = AvatarPlaceholderContext.Provider;
13
+
14
+ export function useAvatarPlaceholder(): AvatarPlaceholderConfig | null {
15
+ return useContext(AvatarPlaceholderContext);
16
+ }