@oxyhq/bloom 0.1.5 → 0.1.7

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 (62) hide show
  1. package/lib/commonjs/avatar/Avatar.js +23 -7
  2. package/lib/commonjs/avatar/Avatar.js.map +1 -1
  3. package/lib/commonjs/image-resolver/context.js +20 -0
  4. package/lib/commonjs/image-resolver/context.js.map +1 -0
  5. package/lib/commonjs/image-resolver/index.js +19 -0
  6. package/lib/commonjs/image-resolver/index.js.map +1 -0
  7. package/lib/module/avatar/Avatar.js +24 -8
  8. package/lib/module/avatar/Avatar.js.map +1 -1
  9. package/lib/module/image-resolver/context.js +16 -0
  10. package/lib/module/image-resolver/context.js.map +1 -0
  11. package/lib/module/image-resolver/index.js +4 -0
  12. package/lib/module/image-resolver/index.js.map +1 -0
  13. package/lib/typescript/commonjs/avatar/Avatar.d.ts.map +1 -1
  14. package/lib/typescript/commonjs/image-resolver/context.d.ts +8 -0
  15. package/lib/typescript/commonjs/image-resolver/context.d.ts.map +1 -0
  16. package/lib/typescript/commonjs/image-resolver/index.d.ts +2 -0
  17. package/lib/typescript/commonjs/image-resolver/index.d.ts.map +1 -0
  18. package/lib/typescript/commonjs/styles/tokens.d.ts +67 -0
  19. package/lib/typescript/commonjs/styles/tokens.d.ts.map +1 -0
  20. package/lib/typescript/commonjs/theme/BloomThemeProvider.d.ts +20 -0
  21. package/lib/typescript/commonjs/theme/BloomThemeProvider.d.ts.map +1 -0
  22. package/lib/typescript/commonjs/theme/adaptive-colors.d.ts +3 -0
  23. package/lib/typescript/commonjs/theme/adaptive-colors.d.ts.map +1 -0
  24. package/lib/typescript/commonjs/theme/apply-dark-class.d.ts +2 -0
  25. package/lib/typescript/commonjs/theme/apply-dark-class.d.ts.map +1 -0
  26. package/lib/typescript/commonjs/theme/color-presets.d.ts +12 -0
  27. package/lib/typescript/commonjs/theme/color-presets.d.ts.map +1 -0
  28. package/lib/typescript/commonjs/theme/index.d.ts +9 -0
  29. package/lib/typescript/commonjs/theme/index.d.ts.map +1 -0
  30. package/lib/typescript/commonjs/theme/set-color-scheme-safe.d.ts +9 -0
  31. package/lib/typescript/commonjs/theme/set-color-scheme-safe.d.ts.map +1 -0
  32. package/lib/typescript/commonjs/theme/types.d.ts +39 -0
  33. package/lib/typescript/commonjs/theme/types.d.ts.map +1 -0
  34. package/lib/typescript/commonjs/theme/use-theme.d.ts +5 -0
  35. package/lib/typescript/commonjs/theme/use-theme.d.ts.map +1 -0
  36. package/lib/typescript/module/avatar/Avatar.d.ts.map +1 -1
  37. package/lib/typescript/module/image-resolver/context.d.ts +8 -0
  38. package/lib/typescript/module/image-resolver/context.d.ts.map +1 -0
  39. package/lib/typescript/module/image-resolver/index.d.ts +2 -0
  40. package/lib/typescript/module/image-resolver/index.d.ts.map +1 -0
  41. package/lib/typescript/module/styles/tokens.d.ts +67 -0
  42. package/lib/typescript/module/styles/tokens.d.ts.map +1 -0
  43. package/lib/typescript/module/theme/BloomThemeProvider.d.ts +20 -0
  44. package/lib/typescript/module/theme/BloomThemeProvider.d.ts.map +1 -0
  45. package/lib/typescript/module/theme/adaptive-colors.d.ts +3 -0
  46. package/lib/typescript/module/theme/adaptive-colors.d.ts.map +1 -0
  47. package/lib/typescript/module/theme/apply-dark-class.d.ts +2 -0
  48. package/lib/typescript/module/theme/apply-dark-class.d.ts.map +1 -0
  49. package/lib/typescript/module/theme/color-presets.d.ts +12 -0
  50. package/lib/typescript/module/theme/color-presets.d.ts.map +1 -0
  51. package/lib/typescript/module/theme/index.d.ts +9 -0
  52. package/lib/typescript/module/theme/index.d.ts.map +1 -0
  53. package/lib/typescript/module/theme/set-color-scheme-safe.d.ts +9 -0
  54. package/lib/typescript/module/theme/set-color-scheme-safe.d.ts.map +1 -0
  55. package/lib/typescript/module/theme/types.d.ts +39 -0
  56. package/lib/typescript/module/theme/types.d.ts.map +1 -0
  57. package/lib/typescript/module/theme/use-theme.d.ts +5 -0
  58. package/lib/typescript/module/theme/use-theme.d.ts.map +1 -0
  59. package/package.json +12 -1
  60. package/src/avatar/Avatar.tsx +25 -8
  61. package/src/image-resolver/context.ts +16 -0
  62. package/src/image-resolver/index.ts +1 -0
@@ -7,6 +7,7 @@ exports.Avatar = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _useTheme = require("../theme/use-theme.js");
10
+ var _context = require("../image-resolver/context.js");
10
11
  var _jsxRuntime = require("react/jsx-runtime");
11
12
  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
  // Squircle clip path normalized to 0–1 coordinate space (viewBox="0 0 1 1").
@@ -122,16 +123,31 @@ const AvatarComponent = ({
122
123
  const fallbackColor = theme.colors.backgroundTertiary;
123
124
 
124
125
  // Reset error state when source changes (e.g., list item recycling
125
- // or async URL resolution replacing an initial file ID)
126
- (0, _react.useEffect)(() => {
127
- setErrored(false);
128
- }, [source, uri]);
126
+ // or async URL resolution replacing an initial file ID).
127
+ // Pattern from https://react.dev/learn/you-might-not-need-an-effect#adjusting-some-state-when-a-prop-changes
128
+ const prevSourceRef = (0, _react.useRef)(source);
129
+ const prevUriRef = (0, _react.useRef)(uri);
130
+ if (prevSourceRef.current !== source || prevUriRef.current !== uri) {
131
+ prevSourceRef.current = source;
132
+ prevUriRef.current = uri;
133
+ if (errored) {
134
+ setErrored(false);
135
+ }
136
+ }
137
+ const imageResolver = (0, _context.useImageResolver)();
129
138
 
130
- // Resolve source prop: string → uri, object → ImageSourcePropType
139
+ // Resolve source prop: string → uri, object → ImageSourcePropType.
140
+ // HTTP/data URLs pass through directly. Non-URL strings (e.g. file
141
+ // IDs) are resolved via the app-provided ImageResolver if available.
131
142
  const resolvedUri = (0, _react.useMemo)(() => {
132
- if (typeof source === 'string') return source;
143
+ if (typeof source === 'string') {
144
+ if (source.startsWith('http://') || source.startsWith('https://') || source.startsWith('data:')) {
145
+ return source;
146
+ }
147
+ return imageResolver?.(source);
148
+ }
133
149
  return uri;
134
- }, [source, uri]);
150
+ }, [source, uri, imageResolver]);
135
151
  const resolvedImageSource = (0, _react.useMemo)(() => {
136
152
  if (source != null && typeof source !== 'string') return source;
137
153
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_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","onError","svg","jsx","CircleFallback","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","AvatarComponent","verified","verifiedIcon","shape","imageStyle","onPress","testID","errored","setErrored","useState","theme","useTheme","colors","backgroundTertiary","useEffect","resolvedUri","resolvedImageSource","undefined","effectiveUri","imageSource","content","container","imageContainer","resizeMode","StyleSheet","absoluteFillObject","verifiedBadge","TouchableOpacity","create","position","overflow","justifyContent","alignItems","bottom","right","zIndex","opacity","Avatar","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAF,OAAA;AAA8C,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAG9C;AACA,MAAMkB,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,GAAGzB,OAAO,CAAC,kBAAkB,CAAC;IACzC,CAAC,CAAC,MAAM;MACNyB,SAAS,GAAG,IAAI;IAClB;EACF;EACA,OAAOA,SAAS;AAClB;AAEA,SAASG,aAAaA,CAAC;EACrBC,GAAG;EACHC,cAAc;EACdC,IAAI;EACJC,aAAa;EACbC;AAOF,CAAC,EAAE;EACD,MAAMC,GAAG,GAAGP,YAAY,CAAC,CAAC;EAC1B,IAAI,CAACO,GAAG,EAAE;IACR;IACA,oBAAO,IAAA/B,WAAA,CAAAgC,GAAA,EAACC,cAAc;MAACL,IAAI,EAAEA,IAAK;MAACC,aAAa,EAAEA;IAAc,CAAE,CAAC;EACrE;EAEA,MAAM;IAAElB,OAAO,EAAEuB,GAAG;IAAEC,IAAI;IAAEC,QAAQ;IAAEC,IAAI;IAAEC,KAAK,EAAEC;EAAS,CAAC,GAAGR,GAAG;EACnE,MAAMS,MAAM,GAAG,IAAAC,cAAO,EAAC,MAAM,YAAYpB,aAAa,EAAE,EAAE,EAAE,EAAE,CAAC;EAE/D,MAAMqB,IAAI,GAAGhB,GAAG,GAAG;IAAEA;EAAI,CAAC,GAAGC,cAAc;EAC3C,IAAI,CAACe,IAAI,EAAE;IACT,oBAAO,IAAA1C,WAAA,CAAAgC,GAAA,EAACC,cAAc;MAACL,IAAI,EAAEA,IAAK;MAACC,aAAa,EAAEA;IAAc,CAAE,CAAC;EACrE;EAEA,oBACE,IAAA7B,WAAA,CAAA2C,IAAA,EAAA3C,WAAA,CAAA4C,QAAA;IAAAC,QAAA,GAEGnB,GAAG,iBACF,IAAA1B,WAAA,CAAAgC,GAAA,EAAClC,YAAA,CAAAwC,KAAK;MACJQ,MAAM,EAAE;QAAEpB;MAAI,CAAE;MAChBqB,KAAK,EAAEC,MAAM,CAACC,aAAc;MAC5BnB,OAAO,EAAEA;IAAQ,CAClB,CACF,eACD,IAAA9B,WAAA,CAAA2C,IAAA,EAACT,GAAG;MAACgB,KAAK,EAAEtB,IAAK;MAACuB,MAAM,EAAEvB,IAAK;MAACwB,OAAO,EAAC,SAAS;MAAAP,QAAA,gBAC/C,IAAA7C,WAAA,CAAAgC,GAAA,EAACG,IAAI;QAAAU,QAAA,eACH,IAAA7C,WAAA,CAAAgC,GAAA,EAACI,QAAQ;UAACiB,EAAE,EAAEb,MAAO;UAAAK,QAAA,eACnB,IAAA7C,WAAA,CAAAgC,GAAA,EAACK,IAAI;YAACiB,CAAC,EAAElC;UAAc,CAAE;QAAC,CAClB;MAAC,CACP,CAAC,eACP,IAAApB,WAAA,CAAAgC,GAAA,EAACO,QAAQ;QACPG,IAAI,EAAEA,IAAK;QACXQ,KAAK,EAAE,CAAE;QACTC,MAAM,EAAE,CAAE;QACVI,mBAAmB,EAAC,gBAAgB;QACpCC,QAAQ,EAAE,QAAQhB,MAAM;MAAI,CAC7B,CAAC;IAAA,CACC,CAAC;EAAA,CACN,CAAC;AAEP;AAEA,SAASP,cAAcA,CAAC;EAAEL,IAAI;EAAEC;AAAuD,CAAC,EAAE;EACxF,MAAM4B,MAAM,GAAG7B,IAAI,GAAG,CAAC;EACvB,oBACE,IAAA5B,WAAA,CAAAgC,GAAA,EAAClC,YAAA,CAAA4D,IAAI;IACHX,KAAK,EAAE;MACLG,KAAK,EAAEtB,IAAI;MACXuB,MAAM,EAAEvB,IAAI;MACZ+B,YAAY,EAAEF,MAAM;MACpBG,eAAe,EAAE/B;IACnB;EAAE,CACH,CAAC;AAEN;AAEA,MAAMgC,eAAsC,GAAGA,CAAC;EAC9Cf,MAAM;EACNpB,GAAG;EACHC,cAAc;EACdC,IAAI,GAAG,EAAE;EACTkC,QAAQ,GAAG,KAAK;EAChBC,YAAY;EACZC,KAAK,GAAG,QAAQ;EAChBjB,KAAK;EACLkB,UAAU;EACVC,OAAO;EACPC;AACF,CAAC,KAAK;EACJ,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAC7C,MAAMC,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAMf,MAAM,GAAG7B,IAAI,GAAG,CAAC;EACvB,MAAMC,aAAa,GAAG0C,KAAK,CAACE,MAAM,CAACC,kBAAkB;;EAErD;EACA;EACA,IAAAC,gBAAS,EAAC,MAAM;IACdN,UAAU,CAAC,KAAK,CAAC;EACnB,CAAC,EAAE,CAACvB,MAAM,EAAEpB,GAAG,CAAC,CAAC;;EAEjB;EACA,MAAMkD,WAAW,GAAG,IAAAnC,cAAO,EAAC,MAAM;IAChC,IAAI,OAAOK,MAAM,KAAK,QAAQ,EAAE,OAAOA,MAAM;IAC7C,OAAOpB,GAAG;EACZ,CAAC,EAAE,CAACoB,MAAM,EAAEpB,GAAG,CAAC,CAAC;EAEjB,MAAMmD,mBAAmB,GAAG,IAAApC,cAAO,EAAC,MAAM;IACxC,IAAIK,MAAM,IAAI,IAAI,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE,OAAOA,MAAM;IAC/D,OAAOgC,SAAS;EAClB,CAAC,EAAE,CAAChC,MAAM,CAAC,CAAC;EAEZ,MAAMiC,YAAY,GAAGX,OAAO,GAAGU,SAAS,GAAGF,WAAW;EAEtD,MAAMI,WAAW,GAAG,IAAAvC,cAAO,EAAC,MAAM;IAChC,IAAIsC,YAAY,EAAE,OAAO;MAAErD,GAAG,EAAEqD;IAAa,CAAC;IAC9C,IAAIF,mBAAmB,EAAE,OAAOA,mBAAmB;IACnD,OAAOlD,cAAc;EACvB,CAAC,EAAE,CAACoD,YAAY,EAAEF,mBAAmB,EAAElD,cAAc,CAAC,CAAC;EAEvD,MAAMsD,OAAO,gBACX,IAAAjF,WAAA,CAAA2C,IAAA,EAAC7C,YAAA,CAAA4D,IAAI;IAACX,KAAK,EAAE,CAACC,MAAM,CAACkC,SAAS,EAAE;MAAEhC,KAAK,EAAEtB,IAAI;MAAEuB,MAAM,EAAEvB;IAAK,CAAC,EAAEmB,KAAK,CAAE;IAACoB,MAAM,EAAEA,MAAO;IAAAtB,QAAA,GACnFmB,KAAK,KAAK,UAAU,gBACnB,IAAAhE,WAAA,CAAAgC,GAAA,EAACP,aAAa;MACZC,GAAG,EAAEqD,YAAa;MAClBpD,cAAc,EAAEA,cAAe;MAC/BC,IAAI,EAAEA,IAAK;MACXC,aAAa,EAAEA,aAAc;MAC7BC,OAAO,EAAEA,CAAA,KAAMuC,UAAU,CAAC,IAAI;IAAE,CACjC,CAAC,gBAEF,IAAArE,WAAA,CAAAgC,GAAA,EAAClC,YAAA,CAAA4D,IAAI;MAACX,KAAK,EAAE,CAACC,MAAM,CAACmC,cAAc,EAAE;QAAEjC,KAAK,EAAEtB,IAAI;QAAEuB,MAAM,EAAEvB,IAAI;QAAE+B,YAAY,EAAEF;MAAO,CAAC,CAAE;MAAAZ,QAAA,EACvFmC,WAAW,gBACV,IAAAhF,WAAA,CAAAgC,GAAA,EAAClC,YAAA,CAAAwC,KAAK;QACJQ,MAAM,EAAEkC,WAAY;QACpBlD,OAAO,EAAEA,CAAA,KAAMuC,UAAU,CAAC,IAAI,CAAE;QAChCe,UAAU,EAAC,OAAO;QAClBrC,KAAK,EAAE,CAACsC,uBAAU,CAACC,kBAAkB,EAAE;UAAE3B,YAAY,EAAEF;QAAO,CAAC,EAAEQ,UAAU;MAAE,CAC9E,CAAC,gBAEF,IAAAjE,WAAA,CAAAgC,GAAA,EAACC,cAAc;QAACL,IAAI,EAAEA,IAAK;QAACC,aAAa,EAAEA;MAAc,CAAE;IAC5D,CACG,CACP,EAEAiC,QAAQ,IAAIC,YAAY,iBACvB,IAAA/D,WAAA,CAAAgC,GAAA,EAAClC,YAAA,CAAA4D,IAAI;MACHX,KAAK,EAAE,CACLC,MAAM,CAACuC,aAAa,EACpB;QACErC,KAAK,EAAEtB,IAAI,GAAG,IAAI;QAClBuB,MAAM,EAAEvB,IAAI,GAAG;MACjB,CAAC,CACD;MAAAiB,QAAA,EAEDkB;IAAY,CACT,CACP;EAAA,CACG,CACP;EAED,IAAIG,OAAO,EAAE;IACX,oBAAO,IAAAlE,WAAA,CAAAgC,GAAA,EAAClC,YAAA,CAAA0F,gBAAgB;MAACtB,OAAO,EAAEA,OAAQ;MAAArB,QAAA,EAAEoC;IAAO,CAAmB,CAAC;EACzE;EAEA,OAAOA,OAAO;AAChB,CAAC;AAED,MAAMjC,MAAM,GAAGqC,uBAAU,CAACI,MAAM,CAAC;EAC/BP,SAAS,EAAE;IACTQ,QAAQ,EAAE,UAAU;IACpBC,QAAQ,EAAE,SAAS;IACnBC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDV,cAAc,EAAE;IACdQ,QAAQ,EAAE,QAAQ;IAClBC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDN,aAAa,EAAE;IACbG,QAAQ,EAAE,UAAU;IACpBI,MAAM,EAAE,CAAC,CAAC;IACVC,KAAK,EAAE,CAAC,CAAC;IACTH,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBG,MAAM,EAAE;EACV,CAAC;EACD/C,aAAa,EAAE;IACbyC,QAAQ,EAAE,UAAU;IACpBxC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACT8C,OAAO,EAAE;EACX;AACF,CAAC,CAAC;AAEK,MAAMC,MAAM,GAAAC,OAAA,CAAAD,MAAA,gBAAG,IAAAE,WAAI,EAACvC,eAAe,CAAC;AAC3CqC,MAAM,CAACG,WAAW,GAAG,QAAQ","ignoreList":[]}
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","onError","svg","jsx","CircleFallback","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","AvatarComponent","verified","verifiedIcon","shape","imageStyle","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","overflow","justifyContent","alignItems","bottom","right","zIndex","opacity","Avatar","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ImageResolverProvider = void 0;
7
+ exports.useImageResolver = useImageResolver;
8
+ var _react = require("react");
9
+ /**
10
+ * A function that resolves opaque identifiers (e.g. file IDs) to
11
+ * loadable image URLs. Returns `undefined` when no URL is available yet.
12
+ */
13
+
14
+ const ImageResolverContext = /*#__PURE__*/(0, _react.createContext)(null);
15
+ ImageResolverContext.displayName = 'BloomImageResolverContext';
16
+ const ImageResolverProvider = exports.ImageResolverProvider = ImageResolverContext.Provider;
17
+ function useImageResolver() {
18
+ return (0, _react.useContext)(ImageResolverContext);
19
+ }
20
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","ImageResolverContext","createContext","displayName","ImageResolverProvider","exports","Provider","useImageResolver","useContext"],"sourceRoot":"../../../src","sources":["image-resolver/context.ts"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;;AAGA,MAAMC,oBAAoB,gBAAG,IAAAC,oBAAa,EAAuB,IAAI,CAAC;AACtED,oBAAoB,CAACE,WAAW,GAAG,2BAA2B;AAEvD,MAAMC,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAGH,oBAAoB,CAACK,QAAQ;AAE3D,SAASC,gBAAgBA,CAAA,EAAyB;EACvD,OAAO,IAAAC,iBAAU,EAACP,oBAAoB,CAAC;AACzC","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ImageResolverProvider", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _context.ImageResolverProvider;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "useImageResolver", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _context.useImageResolver;
16
+ }
17
+ });
18
+ var _context = require("./context.js");
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_context","require"],"sourceRoot":"../../../src","sources":["image-resolver/index.ts"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA","ignoreList":[]}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
 
3
- import React, { memo, useEffect, useMemo, useState } from 'react';
3
+ 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
+ import { useImageResolver } from "../image-resolver/context.js";
6
7
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
7
8
  // Squircle clip path normalized to 0–1 coordinate space (viewBox="0 0 1 1").
8
9
  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';
@@ -117,16 +118,31 @@ const AvatarComponent = ({
117
118
  const fallbackColor = theme.colors.backgroundTertiary;
118
119
 
119
120
  // Reset error state when source changes (e.g., list item recycling
120
- // or async URL resolution replacing an initial file ID)
121
- useEffect(() => {
122
- setErrored(false);
123
- }, [source, uri]);
121
+ // or async URL resolution replacing an initial file ID).
122
+ // Pattern from https://react.dev/learn/you-might-not-need-an-effect#adjusting-some-state-when-a-prop-changes
123
+ const prevSourceRef = useRef(source);
124
+ const prevUriRef = useRef(uri);
125
+ if (prevSourceRef.current !== source || prevUriRef.current !== uri) {
126
+ prevSourceRef.current = source;
127
+ prevUriRef.current = uri;
128
+ if (errored) {
129
+ setErrored(false);
130
+ }
131
+ }
132
+ const imageResolver = useImageResolver();
124
133
 
125
- // Resolve source prop: string → uri, object → ImageSourcePropType
134
+ // Resolve source prop: string → uri, object → ImageSourcePropType.
135
+ // HTTP/data URLs pass through directly. Non-URL strings (e.g. file
136
+ // IDs) are resolved via the app-provided ImageResolver if available.
126
137
  const resolvedUri = useMemo(() => {
127
- if (typeof source === 'string') return source;
138
+ if (typeof source === 'string') {
139
+ if (source.startsWith('http://') || source.startsWith('https://') || source.startsWith('data:')) {
140
+ return source;
141
+ }
142
+ return imageResolver?.(source);
143
+ }
128
144
  return uri;
129
- }, [source, uri]);
145
+ }, [source, uri, imageResolver]);
130
146
  const resolvedImageSource = useMemo(() => {
131
147
  if (source != null && typeof source !== 'string') return source;
132
148
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useEffect","useMemo","useState","View","Image","StyleSheet","TouchableOpacity","useTheme","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SQUIRCLE_PATH","clipIdCounter","svgModule","svgModuleResolved","getSvgModule","require","SquircleImage","uri","fallbackSource","size","fallbackColor","onError","svg","CircleFallback","default","Svg","Defs","ClipPath","Path","SvgImage","clipId","href","children","source","style","styles","errorDetector","width","height","viewBox","id","d","preserveAspectRatio","clipPath","radius","borderRadius","backgroundColor","AvatarComponent","verified","verifiedIcon","shape","imageStyle","onPress","testID","errored","setErrored","theme","colors","backgroundTertiary","resolvedUri","resolvedImageSource","undefined","effectiveUri","imageSource","content","container","imageContainer","resizeMode","absoluteFillObject","verifiedBadge","create","position","overflow","justifyContent","alignItems","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","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SQUIRCLE_PATH","clipIdCounter","svgModule","svgModuleResolved","getSvgModule","require","SquircleImage","uri","fallbackSource","size","fallbackColor","onError","svg","CircleFallback","default","Svg","Defs","ClipPath","Path","SvgImage","clipId","href","children","source","style","styles","errorDetector","width","height","viewBox","id","d","preserveAspectRatio","clipPath","radius","borderRadius","backgroundColor","AvatarComponent","verified","verifiedIcon","shape","imageStyle","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","overflow","justifyContent","alignItems","bottom","right","zIndex","opacity","Avatar","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ import { createContext, useContext } from 'react';
4
+
5
+ /**
6
+ * A function that resolves opaque identifiers (e.g. file IDs) to
7
+ * loadable image URLs. Returns `undefined` when no URL is available yet.
8
+ */
9
+
10
+ const ImageResolverContext = /*#__PURE__*/createContext(null);
11
+ ImageResolverContext.displayName = 'BloomImageResolverContext';
12
+ export const ImageResolverProvider = ImageResolverContext.Provider;
13
+ export function useImageResolver() {
14
+ return useContext(ImageResolverContext);
15
+ }
16
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","ImageResolverContext","displayName","ImageResolverProvider","Provider","useImageResolver"],"sourceRoot":"../../../src","sources":["image-resolver/context.ts"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAEjD;AACA;AACA;AACA;;AAGA,MAAMC,oBAAoB,gBAAGF,aAAa,CAAuB,IAAI,CAAC;AACtEE,oBAAoB,CAACC,WAAW,GAAG,2BAA2B;AAE9D,OAAO,MAAMC,qBAAqB,GAAGF,oBAAoB,CAACG,QAAQ;AAElE,OAAO,SAASC,gBAAgBA,CAAA,EAAyB;EACvD,OAAOL,UAAU,CAACC,oBAAoB,CAAC;AACzC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { ImageResolverProvider, useImageResolver } from "./context.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ImageResolverProvider","useImageResolver"],"sourceRoot":"../../../src","sources":["image-resolver/index.ts"],"mappings":";;AAAA,SAASA,qBAAqB,EAAEC,gBAAgB,QAA4B,cAAW","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAIlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAyN3C,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;AAK/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAyO3C,eAAO,MAAM,MAAM,yCAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A function that resolves opaque identifiers (e.g. file IDs) to
3
+ * loadable image URLs. Returns `undefined` when no URL is available yet.
4
+ */
5
+ export type ImageResolver = (id: string) => string | undefined;
6
+ export declare const ImageResolverProvider: import("react").Provider<ImageResolver | null>;
7
+ export declare function useImageResolver(): ImageResolver | null;
8
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/image-resolver/context.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAK/D,eAAO,MAAM,qBAAqB,gDAAgC,CAAC;AAEnE,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAEvD"}
@@ -0,0 +1,2 @@
1
+ export { ImageResolverProvider, useImageResolver, type ImageResolver } from './context';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/image-resolver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Spacing tokens following t-shirt size convention.
3
+ * Compatible with ALF token naming.
4
+ */
5
+ export declare const space: {
6
+ readonly _2xs: 2;
7
+ readonly xs: 4;
8
+ readonly sm: 8;
9
+ readonly md: 12;
10
+ readonly lg: 16;
11
+ readonly xl: 20;
12
+ readonly _2xl: 24;
13
+ readonly _3xl: 32;
14
+ readonly _4xl: 40;
15
+ readonly _5xl: 60;
16
+ };
17
+ /**
18
+ * Font size tokens.
19
+ */
20
+ export declare const fontSize: {
21
+ readonly _2xs: 10;
22
+ readonly xs: 12;
23
+ readonly sm: 13;
24
+ readonly md: 15;
25
+ readonly lg: 17;
26
+ readonly xl: 20;
27
+ readonly _2xl: 22;
28
+ readonly _3xl: 26;
29
+ readonly _4xl: 32;
30
+ readonly _5xl: 40;
31
+ };
32
+ /**
33
+ * Line height multipliers.
34
+ */
35
+ export declare const lineHeight: {
36
+ readonly tight: 1.15;
37
+ readonly snug: 1.3;
38
+ readonly normal: 1.5;
39
+ readonly relaxed: 1.625;
40
+ };
41
+ /**
42
+ * Border radius tokens.
43
+ */
44
+ export declare const borderRadius: {
45
+ readonly _2xs: 2;
46
+ readonly xs: 4;
47
+ readonly sm: 8;
48
+ readonly md: 12;
49
+ readonly lg: 16;
50
+ readonly xl: 20;
51
+ readonly _2xl: 24;
52
+ readonly full: 999;
53
+ };
54
+ /**
55
+ * Gradient definitions for icon system.
56
+ */
57
+ export declare const gradients: {
58
+ readonly primary: {
59
+ readonly values: Array<[number, string]>;
60
+ readonly hover_value: "#1085FE";
61
+ };
62
+ readonly sky: {
63
+ readonly values: Array<[number, string]>;
64
+ readonly hover_value: "#0A7AFF";
65
+ };
66
+ };
67
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../../src/styles/tokens.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;CAWR,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;CAWX,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;CASf,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,SAAS;;yBAOb,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;;yBAOvB,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;CAGtB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { type AppColorName } from './color-presets';
3
+ import type { Theme, ThemeMode } from './types';
4
+ export interface BloomThemeContextValue {
5
+ theme: Theme;
6
+ mode: ThemeMode;
7
+ colorPreset: AppColorName;
8
+ setMode: (mode: ThemeMode) => void;
9
+ setColorPreset: (preset: AppColorName) => void;
10
+ }
11
+ export declare const BloomThemeContext: React.Context<BloomThemeContextValue | null>;
12
+ export interface BloomThemeProviderProps {
13
+ mode?: ThemeMode;
14
+ colorPreset?: AppColorName;
15
+ onModeChange?: (mode: ThemeMode) => void;
16
+ onColorPresetChange?: (preset: AppColorName) => void;
17
+ children: React.ReactNode;
18
+ }
19
+ export declare function BloomThemeProvider({ mode: controlledMode, colorPreset: controlledPreset, onModeChange, onColorPresetChange, children, }: BloomThemeProviderProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=BloomThemeProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BloomThemeProvider.d.ts","sourceRoot":"","sources":["../../../../src/theme/BloomThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAE9E,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIvE,OAAO,KAAK,EAAE,KAAK,EAAe,SAAS,EAAE,MAAM,SAAS,CAAC;AAmB7D,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,YAAY,CAAC;IAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACnC,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CAChD;AAED,eAAO,MAAM,iBAAiB,8CAAqD,CAAC;AAEpF,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACrD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,gBAAgB,EAC7B,YAAY,EACZ,mBAAmB,EACnB,QAAQ,GACT,EAAE,uBAAuB,2CA8GzB"}
@@ -0,0 +1,3 @@
1
+ import type { ThemeColors } from './types';
2
+ export declare function getAdaptiveColors(): ThemeColors | null;
3
+ //# sourceMappingURL=adaptive-colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-colors.d.ts","sourceRoot":"","sources":["../../../../src/theme/adaptive-colors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAoF3C,wBAAgB,iBAAiB,IAAI,WAAW,GAAG,IAAI,CAItD"}
@@ -0,0 +1,2 @@
1
+ export declare function applyDarkClass(resolved: 'light' | 'dark'): void;
2
+ //# sourceMappingURL=apply-dark-class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-dark-class.d.ts","sourceRoot":"","sources":["../../../../src/theme/apply-dark-class.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,QAIxD"}
@@ -0,0 +1,12 @@
1
+ export type AppColorName = 'teal' | 'blue' | 'green' | 'amber' | 'red' | 'purple' | 'pink' | 'sky' | 'orange' | 'mint';
2
+ export interface AppColorPreset {
3
+ name: AppColorName;
4
+ hex: string;
5
+ light: Record<string, string>;
6
+ dark: Record<string, string>;
7
+ }
8
+ export declare const APP_COLOR_NAMES: AppColorName[];
9
+ export declare const HEX_TO_APP_COLOR: Record<string, AppColorName>;
10
+ export declare function hexToAppColorName(hex: string): AppColorName;
11
+ export declare const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset>;
12
+ //# sourceMappingURL=color-presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-presets.d.ts","sourceRoot":"","sources":["../../../../src/theme/color-presets.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,eAAe,EAAE,YAAY,EAAyF,CAAC;AAEpI,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAWzD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAE3D;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CAsdlE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { BloomThemeProvider } from './BloomThemeProvider';
2
+ export type { BloomThemeProviderProps, BloomThemeContextValue } from './BloomThemeProvider';
3
+ export { useTheme, useThemeColor, useBloomTheme } from './use-theme';
4
+ export type { Theme, ThemeColors, ThemeMode } from './types';
5
+ export type { AppColorName, AppColorPreset } from './color-presets';
6
+ export { APP_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName } from './color-presets';
7
+ export { applyDarkClass } from './apply-dark-class';
8
+ export { setColorSchemeSafe } from './set-color-scheme-safe';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ThemeMode } from './types';
2
+ /**
3
+ * Safely set the color scheme via Appearance API.
4
+ * On Android (RN 0.83+), Appearance.setColorScheme has a Kotlin non-null
5
+ * annotation on `style`. Passing null for 'system' crashes.
6
+ * Workaround: resolve the system preference and pass 'light'/'dark' instead.
7
+ */
8
+ export declare function setColorSchemeSafe(mode: ThemeMode): void;
9
+ //# sourceMappingURL=set-color-scheme-safe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-color-scheme-safe.d.ts","sourceRoot":"","sources":["../../../../src/theme/set-color-scheme-safe.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,QAQjD"}
@@ -0,0 +1,39 @@
1
+ export type ThemeMode = 'light' | 'dark' | 'system' | 'adaptive';
2
+ export interface ThemeColors {
3
+ background: string;
4
+ backgroundSecondary: string;
5
+ backgroundTertiary: string;
6
+ text: string;
7
+ textSecondary: string;
8
+ textTertiary: string;
9
+ border: string;
10
+ borderLight: string;
11
+ primary: string;
12
+ primaryLight: string;
13
+ primaryDark: string;
14
+ secondary: string;
15
+ tint: string;
16
+ icon: string;
17
+ iconActive: string;
18
+ success: string;
19
+ error: string;
20
+ warning: string;
21
+ info: string;
22
+ primarySubtle: string;
23
+ primarySubtleForeground: string;
24
+ negative: string;
25
+ negativeForeground: string;
26
+ negativeSubtle: string;
27
+ negativeSubtleForeground: string;
28
+ contrast50: string;
29
+ card: string;
30
+ shadow: string;
31
+ overlay: string;
32
+ }
33
+ export interface Theme {
34
+ mode: 'light' | 'dark';
35
+ colors: ThemeColors;
36
+ isDark: boolean;
37
+ isLight: boolean;
38
+ }
39
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/theme/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAE3B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IAErB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IAEpB,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IAEb,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,EAAE,MAAM,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IAEnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,5 @@
1
+ import type { Theme, ThemeColors } from './types';
2
+ export declare function useTheme(): Theme;
3
+ export declare function useThemeColor(colorKey: keyof ThemeColors): string;
4
+ export declare function useBloomTheme(): import("./BloomThemeProvider").BloomThemeContextValue;
5
+ //# sourceMappingURL=use-theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-theme.d.ts","sourceRoot":"","sources":["../../../../src/theme/use-theme.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,QAAQ,IAAI,KAAK,CAMhC;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,WAAW,GAAG,MAAM,CAGjE;AAED,wBAAgB,aAAa,0DAM5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAIlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAyN3C,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;AAK/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAyO3C,eAAO,MAAM,MAAM,yCAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A function that resolves opaque identifiers (e.g. file IDs) to
3
+ * loadable image URLs. Returns `undefined` when no URL is available yet.
4
+ */
5
+ export type ImageResolver = (id: string) => string | undefined;
6
+ export declare const ImageResolverProvider: import("react").Provider<ImageResolver | null>;
7
+ export declare function useImageResolver(): ImageResolver | null;
8
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/image-resolver/context.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAK/D,eAAO,MAAM,qBAAqB,gDAAgC,CAAC;AAEnE,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAEvD"}
@@ -0,0 +1,2 @@
1
+ export { ImageResolverProvider, useImageResolver, type ImageResolver } from './context';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/image-resolver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Spacing tokens following t-shirt size convention.
3
+ * Compatible with ALF token naming.
4
+ */
5
+ export declare const space: {
6
+ readonly _2xs: 2;
7
+ readonly xs: 4;
8
+ readonly sm: 8;
9
+ readonly md: 12;
10
+ readonly lg: 16;
11
+ readonly xl: 20;
12
+ readonly _2xl: 24;
13
+ readonly _3xl: 32;
14
+ readonly _4xl: 40;
15
+ readonly _5xl: 60;
16
+ };
17
+ /**
18
+ * Font size tokens.
19
+ */
20
+ export declare const fontSize: {
21
+ readonly _2xs: 10;
22
+ readonly xs: 12;
23
+ readonly sm: 13;
24
+ readonly md: 15;
25
+ readonly lg: 17;
26
+ readonly xl: 20;
27
+ readonly _2xl: 22;
28
+ readonly _3xl: 26;
29
+ readonly _4xl: 32;
30
+ readonly _5xl: 40;
31
+ };
32
+ /**
33
+ * Line height multipliers.
34
+ */
35
+ export declare const lineHeight: {
36
+ readonly tight: 1.15;
37
+ readonly snug: 1.3;
38
+ readonly normal: 1.5;
39
+ readonly relaxed: 1.625;
40
+ };
41
+ /**
42
+ * Border radius tokens.
43
+ */
44
+ export declare const borderRadius: {
45
+ readonly _2xs: 2;
46
+ readonly xs: 4;
47
+ readonly sm: 8;
48
+ readonly md: 12;
49
+ readonly lg: 16;
50
+ readonly xl: 20;
51
+ readonly _2xl: 24;
52
+ readonly full: 999;
53
+ };
54
+ /**
55
+ * Gradient definitions for icon system.
56
+ */
57
+ export declare const gradients: {
58
+ readonly primary: {
59
+ readonly values: Array<[number, string]>;
60
+ readonly hover_value: "#1085FE";
61
+ };
62
+ readonly sky: {
63
+ readonly values: Array<[number, string]>;
64
+ readonly hover_value: "#0A7AFF";
65
+ };
66
+ };
67
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../../src/styles/tokens.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;CAWR,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;CAWX,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;CASf,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,SAAS;;yBAOb,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;;yBAOvB,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;CAGtB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { type AppColorName } from './color-presets';
3
+ import type { Theme, ThemeMode } from './types';
4
+ export interface BloomThemeContextValue {
5
+ theme: Theme;
6
+ mode: ThemeMode;
7
+ colorPreset: AppColorName;
8
+ setMode: (mode: ThemeMode) => void;
9
+ setColorPreset: (preset: AppColorName) => void;
10
+ }
11
+ export declare const BloomThemeContext: React.Context<BloomThemeContextValue | null>;
12
+ export interface BloomThemeProviderProps {
13
+ mode?: ThemeMode;
14
+ colorPreset?: AppColorName;
15
+ onModeChange?: (mode: ThemeMode) => void;
16
+ onColorPresetChange?: (preset: AppColorName) => void;
17
+ children: React.ReactNode;
18
+ }
19
+ export declare function BloomThemeProvider({ mode: controlledMode, colorPreset: controlledPreset, onModeChange, onColorPresetChange, children, }: BloomThemeProviderProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=BloomThemeProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BloomThemeProvider.d.ts","sourceRoot":"","sources":["../../../../src/theme/BloomThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAE9E,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIvE,OAAO,KAAK,EAAE,KAAK,EAAe,SAAS,EAAE,MAAM,SAAS,CAAC;AAmB7D,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,YAAY,CAAC;IAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACnC,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CAChD;AAED,eAAO,MAAM,iBAAiB,8CAAqD,CAAC;AAEpF,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACrD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,gBAAgB,EAC7B,YAAY,EACZ,mBAAmB,EACnB,QAAQ,GACT,EAAE,uBAAuB,2CA8GzB"}
@@ -0,0 +1,3 @@
1
+ import type { ThemeColors } from './types';
2
+ export declare function getAdaptiveColors(): ThemeColors | null;
3
+ //# sourceMappingURL=adaptive-colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-colors.d.ts","sourceRoot":"","sources":["../../../../src/theme/adaptive-colors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAoF3C,wBAAgB,iBAAiB,IAAI,WAAW,GAAG,IAAI,CAItD"}
@@ -0,0 +1,2 @@
1
+ export declare function applyDarkClass(resolved: 'light' | 'dark'): void;
2
+ //# sourceMappingURL=apply-dark-class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-dark-class.d.ts","sourceRoot":"","sources":["../../../../src/theme/apply-dark-class.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,QAIxD"}
@@ -0,0 +1,12 @@
1
+ export type AppColorName = 'teal' | 'blue' | 'green' | 'amber' | 'red' | 'purple' | 'pink' | 'sky' | 'orange' | 'mint';
2
+ export interface AppColorPreset {
3
+ name: AppColorName;
4
+ hex: string;
5
+ light: Record<string, string>;
6
+ dark: Record<string, string>;
7
+ }
8
+ export declare const APP_COLOR_NAMES: AppColorName[];
9
+ export declare const HEX_TO_APP_COLOR: Record<string, AppColorName>;
10
+ export declare function hexToAppColorName(hex: string): AppColorName;
11
+ export declare const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset>;
12
+ //# sourceMappingURL=color-presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-presets.d.ts","sourceRoot":"","sources":["../../../../src/theme/color-presets.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,eAAe,EAAE,YAAY,EAAyF,CAAC;AAEpI,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAWzD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAE3D;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CAsdlE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { BloomThemeProvider } from './BloomThemeProvider';
2
+ export type { BloomThemeProviderProps, BloomThemeContextValue } from './BloomThemeProvider';
3
+ export { useTheme, useThemeColor, useBloomTheme } from './use-theme';
4
+ export type { Theme, ThemeColors, ThemeMode } from './types';
5
+ export type { AppColorName, AppColorPreset } from './color-presets';
6
+ export { APP_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName } from './color-presets';
7
+ export { applyDarkClass } from './apply-dark-class';
8
+ export { setColorSchemeSafe } from './set-color-scheme-safe';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ThemeMode } from './types';
2
+ /**
3
+ * Safely set the color scheme via Appearance API.
4
+ * On Android (RN 0.83+), Appearance.setColorScheme has a Kotlin non-null
5
+ * annotation on `style`. Passing null for 'system' crashes.
6
+ * Workaround: resolve the system preference and pass 'light'/'dark' instead.
7
+ */
8
+ export declare function setColorSchemeSafe(mode: ThemeMode): void;
9
+ //# sourceMappingURL=set-color-scheme-safe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-color-scheme-safe.d.ts","sourceRoot":"","sources":["../../../../src/theme/set-color-scheme-safe.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,QAQjD"}
@@ -0,0 +1,39 @@
1
+ export type ThemeMode = 'light' | 'dark' | 'system' | 'adaptive';
2
+ export interface ThemeColors {
3
+ background: string;
4
+ backgroundSecondary: string;
5
+ backgroundTertiary: string;
6
+ text: string;
7
+ textSecondary: string;
8
+ textTertiary: string;
9
+ border: string;
10
+ borderLight: string;
11
+ primary: string;
12
+ primaryLight: string;
13
+ primaryDark: string;
14
+ secondary: string;
15
+ tint: string;
16
+ icon: string;
17
+ iconActive: string;
18
+ success: string;
19
+ error: string;
20
+ warning: string;
21
+ info: string;
22
+ primarySubtle: string;
23
+ primarySubtleForeground: string;
24
+ negative: string;
25
+ negativeForeground: string;
26
+ negativeSubtle: string;
27
+ negativeSubtleForeground: string;
28
+ contrast50: string;
29
+ card: string;
30
+ shadow: string;
31
+ overlay: string;
32
+ }
33
+ export interface Theme {
34
+ mode: 'light' | 'dark';
35
+ colors: ThemeColors;
36
+ isDark: boolean;
37
+ isLight: boolean;
38
+ }
39
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/theme/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAE3B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IAErB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IAEpB,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IAEb,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,EAAE,MAAM,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IAEnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,5 @@
1
+ import type { Theme, ThemeColors } from './types';
2
+ export declare function useTheme(): Theme;
3
+ export declare function useThemeColor(colorKey: keyof ThemeColors): string;
4
+ export declare function useBloomTheme(): import("./BloomThemeProvider").BloomThemeContextValue;
5
+ //# sourceMappingURL=use-theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-theme.d.ts","sourceRoot":"","sources":["../../../../src/theme/use-theme.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,QAAQ,IAAI,KAAK,CAMhC;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,WAAW,GAAG,MAAM,CAGjE;AAED,wBAAgB,aAAa,0DAM5B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/bloom",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
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",
@@ -23,6 +23,17 @@
23
23
  "default": "./lib/commonjs/index.js"
24
24
  }
25
25
  },
26
+ "./image-resolver": {
27
+ "react-native": "./src/image-resolver/index.ts",
28
+ "import": {
29
+ "types": "./lib/typescript/module/image-resolver/index.d.ts",
30
+ "default": "./lib/module/image-resolver/index.js"
31
+ },
32
+ "require": {
33
+ "types": "./lib/typescript/commonjs/image-resolver/index.d.ts",
34
+ "default": "./lib/commonjs/image-resolver/index.js"
35
+ }
36
+ },
26
37
  "./theme": {
27
38
  "react-native": "./src/theme/index.ts",
28
39
  "import": {
@@ -1,7 +1,8 @@
1
- import React, { memo, useEffect, useMemo, useState } from 'react';
1
+ import React, { memo, useMemo, useRef, useState } from 'react';
2
2
  import { View, Image, StyleSheet, TouchableOpacity } from 'react-native';
3
3
 
4
4
  import { useTheme } from '../theme/use-theme';
5
+ import { useImageResolver } from '../image-resolver/context';
5
6
  import type { AvatarProps } from './types';
6
7
 
7
8
  // Squircle clip path normalized to 0–1 coordinate space (viewBox="0 0 1 1").
@@ -119,16 +120,32 @@ const AvatarComponent: React.FC<AvatarProps> = ({
119
120
  const fallbackColor = theme.colors.backgroundTertiary;
120
121
 
121
122
  // Reset error state when source changes (e.g., list item recycling
122
- // or async URL resolution replacing an initial file ID)
123
- useEffect(() => {
124
- setErrored(false);
125
- }, [source, uri]);
123
+ // or async URL resolution replacing an initial file ID).
124
+ // Pattern from https://react.dev/learn/you-might-not-need-an-effect#adjusting-some-state-when-a-prop-changes
125
+ const prevSourceRef = useRef(source);
126
+ const prevUriRef = useRef(uri);
127
+ if (prevSourceRef.current !== source || prevUriRef.current !== uri) {
128
+ prevSourceRef.current = source;
129
+ prevUriRef.current = uri;
130
+ if (errored) {
131
+ setErrored(false);
132
+ }
133
+ }
126
134
 
127
- // Resolve source prop: string → uri, object → ImageSourcePropType
135
+ const imageResolver = useImageResolver();
136
+
137
+ // Resolve source prop: string → uri, object → ImageSourcePropType.
138
+ // HTTP/data URLs pass through directly. Non-URL strings (e.g. file
139
+ // IDs) are resolved via the app-provided ImageResolver if available.
128
140
  const resolvedUri = useMemo(() => {
129
- if (typeof source === 'string') return source;
141
+ if (typeof source === 'string') {
142
+ if (source.startsWith('http://') || source.startsWith('https://') || source.startsWith('data:')) {
143
+ return source;
144
+ }
145
+ return imageResolver?.(source);
146
+ }
130
147
  return uri;
131
- }, [source, uri]);
148
+ }, [source, uri, imageResolver]);
132
149
 
133
150
  const resolvedImageSource = useMemo(() => {
134
151
  if (source != null && typeof source !== 'string') return source;
@@ -0,0 +1,16 @@
1
+ import { createContext, useContext } from 'react';
2
+
3
+ /**
4
+ * A function that resolves opaque identifiers (e.g. file IDs) to
5
+ * loadable image URLs. Returns `undefined` when no URL is available yet.
6
+ */
7
+ export type ImageResolver = (id: string) => string | undefined;
8
+
9
+ const ImageResolverContext = createContext<ImageResolver | null>(null);
10
+ ImageResolverContext.displayName = 'BloomImageResolverContext';
11
+
12
+ export const ImageResolverProvider = ImageResolverContext.Provider;
13
+
14
+ export function useImageResolver(): ImageResolver | null {
15
+ return useContext(ImageResolverContext);
16
+ }
@@ -0,0 +1 @@
1
+ export { ImageResolverProvider, useImageResolver, type ImageResolver } from './context';