@oxyhq/bloom 0.68.0 → 0.69.0

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 (116) hide show
  1. package/lib/commonjs/animated-check/AnimatedCheck.js +22 -93
  2. package/lib/commonjs/animated-check/AnimatedCheck.js.map +1 -1
  3. package/lib/commonjs/avatar/Avatar.js +6 -24
  4. package/lib/commonjs/avatar/Avatar.js.map +1 -1
  5. package/lib/commonjs/avatar/AvatarRing.js +14 -30
  6. package/lib/commonjs/avatar/AvatarRing.js.map +1 -1
  7. package/lib/commonjs/bottom-sheet/index.js +9 -4
  8. package/lib/commonjs/bottom-sheet/index.js.map +1 -1
  9. package/lib/commonjs/connection-status/index.js +16 -7
  10. package/lib/commonjs/connection-status/index.js.map +1 -1
  11. package/lib/commonjs/connection-status/netinfo.js +119 -0
  12. package/lib/commonjs/connection-status/netinfo.js.map +1 -0
  13. package/lib/commonjs/hooks/haptics-module.js +109 -0
  14. package/lib/commonjs/hooks/haptics-module.js.map +1 -0
  15. package/lib/commonjs/hooks/useHaptics.js +6 -8
  16. package/lib/commonjs/hooks/useHaptics.js.map +1 -1
  17. package/lib/commonjs/loading/SpinnerIcon.js +22 -55
  18. package/lib/commonjs/loading/SpinnerIcon.js.map +1 -1
  19. package/lib/commonjs/theme/adaptive-colors.js +20 -4
  20. package/lib/commonjs/theme/adaptive-colors.js.map +1 -1
  21. package/lib/commonjs/theme/color-scope/style-builder.js +107 -6
  22. package/lib/commonjs/theme/color-scope/style-builder.js.map +1 -1
  23. package/lib/commonjs/theme/init-css-interop.js +13 -11
  24. package/lib/commonjs/theme/init-css-interop.js.map +1 -1
  25. package/lib/module/animated-check/AnimatedCheck.js +22 -91
  26. package/lib/module/animated-check/AnimatedCheck.js.map +1 -1
  27. package/lib/module/avatar/Avatar.js +1 -19
  28. package/lib/module/avatar/Avatar.js.map +1 -1
  29. package/lib/module/avatar/AvatarRing.js +7 -23
  30. package/lib/module/avatar/AvatarRing.js.map +1 -1
  31. package/lib/module/bottom-sheet/index.js +9 -4
  32. package/lib/module/bottom-sheet/index.js.map +1 -1
  33. package/lib/module/connection-status/index.js +16 -6
  34. package/lib/module/connection-status/index.js.map +1 -1
  35. package/lib/module/connection-status/netinfo.js +114 -0
  36. package/lib/module/connection-status/netinfo.js.map +1 -0
  37. package/lib/module/hooks/haptics-module.js +104 -0
  38. package/lib/module/hooks/haptics-module.js.map +1 -0
  39. package/lib/module/hooks/useHaptics.js +7 -11
  40. package/lib/module/hooks/useHaptics.js.map +1 -1
  41. package/lib/module/loading/SpinnerIcon.js +13 -46
  42. package/lib/module/loading/SpinnerIcon.js.map +1 -1
  43. package/lib/module/loading/index.web.js +2 -2
  44. package/lib/module/theme/adaptive-colors.js +20 -4
  45. package/lib/module/theme/adaptive-colors.js.map +1 -1
  46. package/lib/module/theme/color-scope/style-builder.js +107 -6
  47. package/lib/module/theme/color-scope/style-builder.js.map +1 -1
  48. package/lib/module/theme/init-css-interop.js +13 -11
  49. package/lib/module/theme/init-css-interop.js.map +1 -1
  50. package/lib/typescript/commonjs/animated-check/AnimatedCheck.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/avatar/Avatar.d.ts.map +1 -1
  52. package/lib/typescript/commonjs/avatar/AvatarRing.d.ts.map +1 -1
  53. package/lib/typescript/commonjs/bottom-sheet/index.d.ts.map +1 -1
  54. package/lib/typescript/commonjs/connection-status/index.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/connection-status/netinfo.d.ts +69 -0
  56. package/lib/typescript/commonjs/connection-status/netinfo.d.ts.map +1 -0
  57. package/lib/typescript/commonjs/hooks/haptics-module.d.ts +58 -0
  58. package/lib/typescript/commonjs/hooks/haptics-module.d.ts.map +1 -0
  59. package/lib/typescript/commonjs/hooks/useHaptics.d.ts.map +1 -1
  60. package/lib/typescript/commonjs/loading/SpinnerIcon.d.ts +9 -2
  61. package/lib/typescript/commonjs/loading/SpinnerIcon.d.ts.map +1 -1
  62. package/lib/typescript/commonjs/theme/adaptive-colors.d.ts.map +1 -1
  63. package/lib/typescript/commonjs/theme/color-scope/style-builder.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/theme/init-css-interop.d.ts.map +1 -1
  65. package/lib/typescript/module/animated-check/AnimatedCheck.d.ts.map +1 -1
  66. package/lib/typescript/module/avatar/Avatar.d.ts.map +1 -1
  67. package/lib/typescript/module/avatar/AvatarRing.d.ts.map +1 -1
  68. package/lib/typescript/module/bottom-sheet/index.d.ts.map +1 -1
  69. package/lib/typescript/module/connection-status/index.d.ts.map +1 -1
  70. package/lib/typescript/module/connection-status/netinfo.d.ts +69 -0
  71. package/lib/typescript/module/connection-status/netinfo.d.ts.map +1 -0
  72. package/lib/typescript/module/hooks/haptics-module.d.ts +58 -0
  73. package/lib/typescript/module/hooks/haptics-module.d.ts.map +1 -0
  74. package/lib/typescript/module/hooks/useHaptics.d.ts.map +1 -1
  75. package/lib/typescript/module/loading/SpinnerIcon.d.ts +9 -2
  76. package/lib/typescript/module/loading/SpinnerIcon.d.ts.map +1 -1
  77. package/lib/typescript/module/theme/adaptive-colors.d.ts.map +1 -1
  78. package/lib/typescript/module/theme/color-scope/style-builder.d.ts.map +1 -1
  79. package/lib/typescript/module/theme/init-css-interop.d.ts.map +1 -1
  80. package/package.json +2 -2
  81. package/src/__tests__/color-scope-nativewind.test.ts +135 -0
  82. package/src/__tests__/connection-status-netinfo.test.tsx +203 -0
  83. package/src/__tests__/optional-peer-imports.test.ts +406 -0
  84. package/src/__tests__/svg-required-peer.test.tsx +75 -0
  85. package/src/__tests__/useHaptics.test.tsx +203 -16
  86. package/src/animated-check/AnimatedCheck.tsx +19 -86
  87. package/src/avatar/Avatar.tsx +1 -11
  88. package/src/avatar/AvatarRing.tsx +7 -15
  89. package/src/bottom-sheet/index.tsx +9 -4
  90. package/src/connection-status/index.tsx +16 -6
  91. package/src/connection-status/netinfo.ts +131 -0
  92. package/src/hooks/haptics-module.ts +118 -0
  93. package/src/hooks/useHaptics.tsx +6 -9
  94. package/src/loading/SpinnerIcon.tsx +13 -52
  95. package/src/loading/index.web.ts +2 -2
  96. package/src/theme/adaptive-colors.ts +20 -4
  97. package/src/theme/color-scope/style-builder.ts +118 -6
  98. package/src/theme/init-css-interop.ts +13 -11
  99. package/lib/commonjs/avatar/svg-module.js +0 -15
  100. package/lib/commonjs/avatar/svg-module.js.map +0 -1
  101. package/lib/commonjs/utils/lazy-require.js +0 -37
  102. package/lib/commonjs/utils/lazy-require.js.map +0 -1
  103. package/lib/module/avatar/svg-module.js +0 -11
  104. package/lib/module/avatar/svg-module.js.map +0 -1
  105. package/lib/module/utils/lazy-require.js +0 -33
  106. package/lib/module/utils/lazy-require.js.map +0 -1
  107. package/lib/typescript/commonjs/avatar/svg-module.d.ts +0 -8
  108. package/lib/typescript/commonjs/avatar/svg-module.d.ts.map +0 -1
  109. package/lib/typescript/commonjs/utils/lazy-require.d.ts +0 -15
  110. package/lib/typescript/commonjs/utils/lazy-require.d.ts.map +0 -1
  111. package/lib/typescript/module/avatar/svg-module.d.ts +0 -8
  112. package/lib/typescript/module/avatar/svg-module.d.ts.map +0 -1
  113. package/lib/typescript/module/utils/lazy-require.d.ts +0 -15
  114. package/lib/typescript/module/utils/lazy-require.d.ts.map +0 -1
  115. package/src/avatar/svg-module.ts +0 -11
  116. package/src/utils/lazy-require.ts +0 -31
@@ -8,22 +8,32 @@
8
8
  * again in each app, and competes with the app's own chrome. The toast host is
9
9
  * already mounted, already themed, already stacks.
10
10
  *
11
- * NATIVE variant: `@react-native-community/netinfo` (an Expo-managed dependency
12
- * every Oxy app already ships) reports both link state and reachability. The
13
- * web fork uses `navigator.onLine` instead so Vite/SPA consumers need no extra
14
- * dependency at all.
11
+ * NATIVE variant: `@react-native-community/netinfo` reports both link state and
12
+ * reachability. It is an OPTIONAL peer loaded through `./netinfo` see that
13
+ * file for why it is not a static import, and why an app that omits it gets an
14
+ * inert component rather than a broken bundle. The web fork uses
15
+ * `navigator.onLine` instead so Vite/SPA consumers need no extra dependency at
16
+ * all.
15
17
  */
16
18
  import { useEffect, useState } from 'react';
17
- import NetInfo from '@react-native-community/netinfo';
19
+ import { loadNetInfo, warnNetInfoUnavailable } from "./netinfo.js";
18
20
  import { useConnectionStatusToasts } from "./shared.js";
19
21
  /** Mount once at the app root. Renders nothing. */
20
22
  export function ConnectionStatusToasts(props = {}) {
21
23
  const [isOnline, setIsOnline] = useState(null);
22
24
  useEffect(() => {
25
+ const netInfo = loadNetInfo();
26
+ if (!netInfo) {
27
+ // `isOnline` stays `null`, which `useConnectionStatusToasts` already reads
28
+ // as "not determined yet", so the component is inert instead of broken.
29
+ warnNetInfoUnavailable();
30
+ return undefined;
31
+ }
32
+
23
33
  // `isInternetReachable` is null until the first probe resolves; treat that
24
34
  // as "connected as far as we know" so a captive-portal check never flashes
25
35
  // an outage on launch.
26
- return NetInfo.addEventListener(state => {
36
+ return netInfo.addEventListener(state => {
27
37
  setIsOnline(Boolean(state.isConnected && state.isInternetReachable !== false));
28
38
  });
29
39
  }, []);
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useState","NetInfo","useConnectionStatusToasts","ConnectionStatusToasts","props","isOnline","setIsOnline","addEventListener","state","Boolean","isConnected","isInternetReachable","displayName"],"sourceRoot":"../../../src","sources":["connection-status/index.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,OAAOC,OAAO,MAAM,iCAAiC;AAErD,SAASC,yBAAyB,QAA0C,aAAU;AAItF;AACA,OAAO,SAASC,sBAAsBA,CAACC,KAAkC,GAAG,CAAC,CAAC,EAAQ;EACpF,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGN,QAAQ,CAAiB,IAAI,CAAC;EAE9DD,SAAS,CAAC,MAAM;IACd;IACA;IACA;IACA,OAAOE,OAAO,CAACM,gBAAgB,CAAEC,KAAK,IAAK;MACzCF,WAAW,CAACG,OAAO,CAACD,KAAK,CAACE,WAAW,IAAIF,KAAK,CAACG,mBAAmB,KAAK,KAAK,CAAC,CAAC;IAChF,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAENT,yBAAyB,CAACG,QAAQ,EAAED,KAAK,CAAC;EAC1C,OAAO,IAAI;AACb;AAEAD,sBAAsB,CAACS,WAAW,GAAG,wBAAwB","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useState","loadNetInfo","warnNetInfoUnavailable","useConnectionStatusToasts","ConnectionStatusToasts","props","isOnline","setIsOnline","netInfo","undefined","addEventListener","state","Boolean","isConnected","isInternetReachable","displayName"],"sourceRoot":"../../../src","sources":["connection-status/index.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAE3C,SAASC,WAAW,EAAEC,sBAAsB,QAAQ,cAAW;AAC/D,SAASC,yBAAyB,QAA0C,aAAU;AAItF;AACA,OAAO,SAASC,sBAAsBA,CAACC,KAAkC,GAAG,CAAC,CAAC,EAAQ;EACpF,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGP,QAAQ,CAAiB,IAAI,CAAC;EAE9DD,SAAS,CAAC,MAAM;IACd,MAAMS,OAAO,GAAGP,WAAW,CAAC,CAAC;IAC7B,IAAI,CAACO,OAAO,EAAE;MACZ;MACA;MACAN,sBAAsB,CAAC,CAAC;MACxB,OAAOO,SAAS;IAClB;;IAEA;IACA;IACA;IACA,OAAOD,OAAO,CAACE,gBAAgB,CAAEC,KAAK,IAAK;MACzCJ,WAAW,CAACK,OAAO,CAACD,KAAK,CAACE,WAAW,IAAIF,KAAK,CAACG,mBAAmB,KAAK,KAAK,CAAC,CAAC;IAChF,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAENX,yBAAyB,CAACG,QAAQ,EAAED,KAAK,CAAC;EAC1C,OAAO,IAAI;AACb;AAEAD,sBAAsB,CAACW,WAAW,GAAG,wBAAwB","ignoreList":[]}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The optional-peer boundary for `@react-native-community/netinfo`.
5
+ *
6
+ * netinfo is an OPTIONAL peer, and a static `import` contradicts that: an
7
+ * optional peer that is omitted does not degrade, it fails to RESOLVE, and Metro
8
+ * aborts the whole bundle with `Unable to resolve module
9
+ * @react-native-community/netinfo` — naming a package the app never mentions.
10
+ * Bloom's other optional-peer static imports are immune by accident (`expo-font`
11
+ * ships inside `expo`; `react-dom` is required by react-native-web), but netinfo
12
+ * arrives with nothing, so for this one the failure is real.
13
+ *
14
+ * Metro treats a `require()` of a STRING LITERAL inside a `try` block as an
15
+ * optional dependency: it resolves the real module when installed, and writes
16
+ * `null` into the dependency map when it is not, so the failure moves from build
17
+ * time to the `catch` below. Three constraints the shape has to respect, each
18
+ * checked against metro 0.83.5's own `collectDependencies`:
19
+ *
20
+ * - The specifier must be STATICALLY EVALUABLE, and a literal is the only form
21
+ * worth relying on. Metro rewrites a require it cannot evaluate — the
22
+ * specifier arriving as a function parameter, say — into a thrower ("Dynamic
23
+ * require defined at line N; not supported by Metro"), collecting no
24
+ * dependency at all, so it resolves nothing whether or not the package is
25
+ * installed. That is the defect that made Bloom's haptics, spinner and
26
+ * native color scoping silently dead before it was swept out.
27
+ * - The require must be a DIRECT statement of the try block.
28
+ * `isOptionalDependency` walks up from the call and returns at the first
29
+ * BlockStatement it meets, marking the dependency optional only if that
30
+ * block belongs to a `try`. One `if`/`else` of nesting is enough to lose it,
31
+ * and a non-optional dependency that cannot be resolved fails the BUILD —
32
+ * precisely what this boundary exists to avoid. Hence the `typeof require`
33
+ * guard below sits outside the try rather than inside it.
34
+ * - `require` may not exist at all (this file also backs the `import`
35
+ * condition, i.e. an ESM build under Node), hence that guard.
36
+ *
37
+ * The caller degrades to inert rather than throwing: an absent netinfo costs the
38
+ * outage toast and nothing else, and crashing an app root over a missing
39
+ * cosmetic affordance would be a worse trade than the build failure this
40
+ * replaces. The degradation is silent by construction — a connection toast that
41
+ * never appears looks exactly like a connection that never dropped — so
42
+ * {@link warnNetInfoUnavailable} names the missing package once, in dev.
43
+ */
44
+
45
+ /**
46
+ * Declared locally rather than taken from the ambient `NodeRequire`, which
47
+ * returns `any`: `unknown` forces the module handle to be narrowed below instead
48
+ * of leaking an untyped value into the caller.
49
+ */
50
+
51
+ /** The slice of netinfo's state this component reads. */
52
+
53
+ /**
54
+ * The slice of netinfo's module surface this component calls.
55
+ *
56
+ * Hand-written rather than `typeof import('@react-native-community/netinfo')` so
57
+ * no netinfo type reaches Bloom's emitted declarations — a consumer that skips
58
+ * the optional peer must not inherit a TS7016 from Bloom's own `.d.ts`. The two
59
+ * are kept in step by the assignability check in
60
+ * `__tests__/connection-status-netinfo.test.tsx`, which is excluded from the
61
+ * build and so may name the real package.
62
+ */
63
+
64
+ /** `undefined` until the first load attempt, then the module or `null`. */
65
+ let netInfoModule;
66
+ /** Why the load failed, quoted verbatim in the dev warning. */
67
+ let unavailableReason = '';
68
+ let hasWarned = false;
69
+
70
+ /** The netinfo module, or `null` when the optional peer is not installed. */
71
+ export function loadNetInfo() {
72
+ if (netInfoModule !== undefined) return netInfoModule;
73
+ netInfoModule = null;
74
+
75
+ // The `typeof require` guard sits OUTSIDE the try on purpose — see the second
76
+ // constraint above. Nested one `if`/`else` deeper, the require is no longer a
77
+ // direct statement of the try block, Metro stops marking it optional, and an
78
+ // app without netinfo fails to BUILD instead of losing the outage toast.
79
+ if (typeof require === 'undefined') {
80
+ unavailableReason = 'this bundle has no CommonJS `require`';
81
+ return netInfoModule;
82
+ }
83
+ try {
84
+ // netinfo exposes `addEventListener` both as a named export and on its
85
+ // default export; which one comes back depends on whether the bundler
86
+ // resolved the CommonJS build or the ESM/source entry.
87
+ const loaded = require('@react-native-community/netinfo');
88
+ const resolved = typeof loaded?.addEventListener === 'function' ? loaded : loaded?.default;
89
+ if (typeof resolved?.addEventListener === 'function') {
90
+ netInfoModule = resolved;
91
+ } else {
92
+ unavailableReason = 'the module resolved without an `addEventListener` export';
93
+ }
94
+ } catch (error) {
95
+ unavailableReason = error instanceof Error ? error.message : String(error);
96
+ }
97
+ return netInfoModule;
98
+ }
99
+
100
+ /**
101
+ * One warning per module lifetime, and none in production — the same mechanism
102
+ * as `toast/use-single-outlet-guard.ts`. Metro and Vite/Rolldown both fold the
103
+ * `NODE_ENV` check statically, so a production bundle keeps neither the branch
104
+ * nor the message.
105
+ */
106
+ export function warnNetInfoUnavailable() {
107
+ if (process.env.NODE_ENV === 'production' || hasWarned) return;
108
+ hasWarned = true;
109
+ // Internal Bloom diagnostic: only the consumer's package.json can fix this,
110
+ // so it names the package, the install command and the alternative.
111
+ // eslint-disable-next-line no-console
112
+ console.warn('[Bloom] ConnectionStatusToasts is inert: the optional peer ' + '`@react-native-community/netinfo` could not be loaded, so connection changes ' + 'are never observed and no offline / reconnecting / restored toast will ever ' + 'appear. Install it (`npx expo install @react-native-community/netinfo`) or ' + `stop rendering <ConnectionStatusToasts>. Reason: ${unavailableReason}`);
113
+ }
114
+ //# sourceMappingURL=netinfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["netInfoModule","unavailableReason","hasWarned","loadNetInfo","undefined","require","loaded","resolved","addEventListener","default","error","Error","message","String","warnNetInfoUnavailable","process","env","NODE_ENV","console","warn"],"sourceRoot":"../../../src","sources":["connection-status/netinfo.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAGA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA,IAAIA,aAA6C;AACjD;AACA,IAAIC,iBAAiB,GAAG,EAAE;AAC1B,IAAIC,SAAS,GAAG,KAAK;;AAErB;AACA,OAAO,SAASC,WAAWA,CAAA,EAAuB;EAChD,IAAIH,aAAa,KAAKI,SAAS,EAAE,OAAOJ,aAAa;EACrDA,aAAa,GAAG,IAAI;;EAEpB;EACA;EACA;EACA;EACA,IAAI,OAAOK,OAAO,KAAK,WAAW,EAAE;IAClCJ,iBAAiB,GAAG,uCAAuC;IAC3D,OAAOD,aAAa;EACtB;EAEA,IAAI;IACF;IACA;IACA;IACA,MAAMM,MAAM,GAAGD,OAAO,CAAC,iCAAiC,CAG3C;IACb,MAAME,QAAQ,GAAG,OAAOD,MAAM,EAAEE,gBAAgB,KAAK,UAAU,GAAGF,MAAM,GAAGA,MAAM,EAAEG,OAAO;IAE1F,IAAI,OAAOF,QAAQ,EAAEC,gBAAgB,KAAK,UAAU,EAAE;MACpDR,aAAa,GAAGO,QAAuB;IACzC,CAAC,MAAM;MACLN,iBAAiB,GAAG,0DAA0D;IAChF;EACF,CAAC,CAAC,OAAOS,KAAK,EAAE;IACdT,iBAAiB,GAAGS,KAAK,YAAYC,KAAK,GAAGD,KAAK,CAACE,OAAO,GAAGC,MAAM,CAACH,KAAK,CAAC;EAC5E;EAEA,OAAOV,aAAa;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASc,sBAAsBA,CAAA,EAAS;EAC7C,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAIf,SAAS,EAAE;EACxDA,SAAS,GAAG,IAAI;EAChB;EACA;EACA;EACAgB,OAAO,CAACC,IAAI,CACV,6DAA6D,GAC3D,+EAA+E,GAC/E,8EAA8E,GAC9E,6EAA6E,GAC7E,oDAAoDlB,iBAAiB,EACzE,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The optional-peer boundary for `expo-haptics`.
5
+ *
6
+ * The load has to be dynamic — an optional peer that is omitted does not
7
+ * degrade when it is imported statically, it fails to RESOLVE and Metro aborts
8
+ * the whole bundle naming a package the app never mentions. But it also has to
9
+ * be dynamic in the ONE shape Metro understands: a `require()` of a STRING
10
+ * LITERAL inside a `try` block, which Metro collects as an optional dependency
11
+ * (resolving the real module when installed, writing `null` into the dependency
12
+ * map when it is not, so the failure lands in the `catch` below at evaluation
13
+ * time instead of at build time).
14
+ *
15
+ * The shape this replaced — the deleted `utils/lazy-require.ts`, which took the
16
+ * specifier as a function PARAMETER — satisfied neither. Metro can only collect
17
+ * a dependency whose specifier it can evaluate statically; a parameter it
18
+ * cannot, so it collected nothing and rewrote the call into a thrower ("Dynamic
19
+ * require defined at line N; not supported by Metro"). From a consumer's
20
+ * `node_modules` that resolved NOTHING, installed or not: `expo-haptics` was
21
+ * never loaded on any device and every haptic in Bloom was a silent no-op. It
22
+ * only ever worked under jest, which is CommonJS with a real dynamic `require`.
23
+ *
24
+ * `require` may also not exist at all (this file backs the `import` condition
25
+ * too, i.e. an ESM build under Node), hence the `typeof` guard.
26
+ *
27
+ * A missing haptic is invisible — indistinguishable from a device with haptics
28
+ * turned off — so {@link warnHapticsUnavailable} names the package once, in dev.
29
+ *
30
+ * @see connection-status/netinfo.ts — the same boundary for netinfo.
31
+ */
32
+
33
+ /**
34
+ * Declared locally rather than taken from the ambient `NodeRequire`, which
35
+ * returns `any`: `unknown` forces the module handle to be narrowed below instead
36
+ * of leaking an untyped value into the caller.
37
+ */
38
+
39
+ /**
40
+ * The slice of expo-haptics' module surface this hook calls.
41
+ *
42
+ * Hand-written rather than `typeof import('expo-haptics')` so no expo-haptics
43
+ * type reaches Bloom's emitted declarations — a consumer that skips the optional
44
+ * peer must not inherit a TS7016 from Bloom's own `.d.ts`. The two are kept in
45
+ * step by the assignability check in `__tests__/useHaptics.test.tsx`, which is
46
+ * excluded from the build and so may name the real package.
47
+ *
48
+ * `impactAsync` is declared in METHOD syntax deliberately: `strictFunctionTypes`
49
+ * exempts method parameters from contravariance, which is what keeps the real
50
+ * `(style?: ImpactFeedbackStyle) => Promise<void>` assignable to a `string`
51
+ * parameter here. The widening cannot admit a bad value in practice — the only
52
+ * arguments passed are read straight back out of `ImpactFeedbackStyle`.
53
+ */
54
+
55
+ /** `undefined` until the first load attempt, then the module or `null`. */
56
+ let hapticsModule;
57
+ /** Why the load failed, quoted verbatim in the dev warning. */
58
+ let unavailableReason = '';
59
+ let hasWarned = false;
60
+
61
+ /** The expo-haptics module, or `null` when the optional peer is not installed. */
62
+ export function loadHaptics() {
63
+ if (hapticsModule !== undefined) return hapticsModule;
64
+ hapticsModule = null;
65
+
66
+ // The `typeof require` guard sits OUTSIDE the try on purpose. Metro's
67
+ // `isOptionalDependency` walks up from the require call and returns as soon as
68
+ // it meets a BlockStatement, marking the dependency optional only if THAT
69
+ // block is a try block — so a require nested one `if`/`else` deeper is
70
+ // resolved eagerly like any other import, and an app without the peer fails to
71
+ // BUILD. Keeping the require a direct statement of the try block is the whole
72
+ // difference between degrading and not building.
73
+ if (typeof require === 'undefined') {
74
+ unavailableReason = 'this bundle has no CommonJS `require`';
75
+ return hapticsModule;
76
+ }
77
+ try {
78
+ const loaded = require('expo-haptics');
79
+ if (typeof loaded?.impactAsync === 'function' && typeof loaded.ImpactFeedbackStyle?.Light === 'string') {
80
+ hapticsModule = loaded;
81
+ } else {
82
+ unavailableReason = 'the module resolved without an `impactAsync` / `ImpactFeedbackStyle` export';
83
+ }
84
+ } catch (error) {
85
+ unavailableReason = error instanceof Error ? error.message : String(error);
86
+ }
87
+ return hapticsModule;
88
+ }
89
+
90
+ /**
91
+ * One warning per module lifetime, and none in production — the same mechanism
92
+ * as `connection-status/netinfo.ts` and `toast/use-single-outlet-guard.ts`.
93
+ * Metro and Vite/Rolldown both fold the `NODE_ENV` check statically, so a
94
+ * production bundle keeps neither the branch nor the message.
95
+ */
96
+ export function warnHapticsUnavailable() {
97
+ if (process.env.NODE_ENV === 'production' || hasWarned) return;
98
+ hasWarned = true;
99
+ // Internal Bloom diagnostic: only the consumer's package.json can fix this,
100
+ // so it names the package, the install command and the alternative.
101
+ // eslint-disable-next-line no-console
102
+ console.warn('[Bloom] useHaptics is inert: the optional peer `expo-haptics` could not be ' + 'loaded, so every haptic in Bloom is a silent no-op. Install it ' + '(`npx expo install expo-haptics`) or disable haptics explicitly with ' + `<BloomHapticsProvider enabled={false}>. Reason: ${unavailableReason}`);
103
+ }
104
+ //# sourceMappingURL=haptics-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["hapticsModule","unavailableReason","hasWarned","loadHaptics","undefined","require","loaded","impactAsync","ImpactFeedbackStyle","Light","error","Error","message","String","warnHapticsUnavailable","process","env","NODE_ENV","console","warn"],"sourceRoot":"../../../src","sources":["hooks/haptics-module.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA,IAAIA,aAA6C;AACjD;AACA,IAAIC,iBAAiB,GAAG,EAAE;AAC1B,IAAIC,SAAS,GAAG,KAAK;;AAErB;AACA,OAAO,SAASC,WAAWA,CAAA,EAAuB;EAChD,IAAIH,aAAa,KAAKI,SAAS,EAAE,OAAOJ,aAAa;EACrDA,aAAa,GAAG,IAAI;;EAEpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,OAAOK,OAAO,KAAK,WAAW,EAAE;IAClCJ,iBAAiB,GAAG,uCAAuC;IAC3D,OAAOD,aAAa;EACtB;EAEA,IAAI;IACF,MAAMM,MAAM,GAAGD,OAAO,CAAC,cAAc,CAA4C;IAEjF,IACE,OAAOC,MAAM,EAAEC,WAAW,KAAK,UAAU,IACzC,OAAOD,MAAM,CAACE,mBAAmB,EAAEC,KAAK,KAAK,QAAQ,EACrD;MACAT,aAAa,GAAGM,MAAqB;IACvC,CAAC,MAAM;MACLL,iBAAiB,GACf,6EAA6E;IACjF;EACF,CAAC,CAAC,OAAOS,KAAK,EAAE;IACdT,iBAAiB,GAAGS,KAAK,YAAYC,KAAK,GAAGD,KAAK,CAACE,OAAO,GAAGC,MAAM,CAACH,KAAK,CAAC;EAC5E;EAEA,OAAOV,aAAa;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASc,sBAAsBA,CAAA,EAAS;EAC7C,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAIf,SAAS,EAAE;EACxDA,SAAS,GAAG,IAAI;EAChB;EACA;EACA;EACAgB,OAAO,CAACC,IAAI,CACV,6EAA6E,GAC3E,iEAAiE,GACjE,uEAAuE,GACvE,mDAAmDlB,iBAAiB,EACxE,CAAC;AACH","ignoreList":[]}
@@ -2,17 +2,10 @@
2
2
 
3
3
  import React, { createContext, useCallback, useContext, useMemo } from 'react';
4
4
  import { Platform } from 'react-native';
5
- import { lazyRequire } from "../utils/lazy-require.js";
6
-
7
- /**
8
- * Lazily loads `expo-haptics`, returning `null` when it is not installed. The
9
- * dependency is an optional peer, so calls degrade to a no-op when absent.
10
- */
11
- import { jsx as _jsx } from "react/jsx-runtime";
12
- const getHapticsModule = lazyRequire('expo-haptics');
5
+ import { loadHaptics, warnHapticsUnavailable } from "./haptics-module.js";
13
6
 
14
7
  /** Impact strength requested by a caller. */
15
-
8
+ import { jsx as _jsx } from "react/jsx-runtime";
16
9
  const BloomHapticsContext = /*#__PURE__*/createContext({
17
10
  enabled: true
18
11
  });
@@ -50,8 +43,11 @@ export function useHaptics() {
50
43
  } = useContext(BloomHapticsContext);
51
44
  return useCallback((strength = 'light') => {
52
45
  if (!enabled || Platform.OS === 'web') return;
53
- const haptics = getHapticsModule();
54
- if (!haptics) return;
46
+ const haptics = loadHaptics();
47
+ if (!haptics) {
48
+ warnHapticsUnavailable();
49
+ return;
50
+ }
55
51
  const {
56
52
  ImpactFeedbackStyle
57
53
  } = haptics;
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useCallback","useContext","useMemo","Platform","lazyRequire","jsx","_jsx","getHapticsModule","BloomHapticsContext","enabled","BloomHapticsProvider","children","value","Provider","displayName","useHaptics","strength","OS","haptics","ImpactFeedbackStyle","style","Light","Medium","Heavy","impactAsync"],"sourceRoot":"../../../src","sources":["hooks/useHaptics.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,WAAW,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAC9E,SAASC,QAAQ,QAAQ,cAAc;AAEvC,SAASC,WAAW,QAAQ,0BAAuB;;AAEnD;AACA;AACA;AACA;AAHA,SAAAC,GAAA,IAAAC,IAAA;AAIA,MAAMC,gBAAgB,GAAGH,WAAW,CAAgC,cAAc,CAAC;;AAEnF;;AAOA,MAAMI,mBAAmB,gBAAGT,aAAa,CAA2B;EAAEU,OAAO,EAAE;AAAK,CAAC,CAAC;AAQtF;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAC;EAAED,OAAO,GAAG,IAAI;EAAEE;AAAoC,CAAC,EAAE;EAC5F,MAAMC,KAAK,GAAGV,OAAO,CAAC,OAAO;IAAEO;EAAQ,CAAC,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EACrD,oBAAOH,IAAA,CAACE,mBAAmB,CAACK,QAAQ;IAACD,KAAK,EAAEA,KAAM;IAAAD,QAAA,EAAEA;EAAQ,CAA+B,CAAC;AAC9F;AAEAD,oBAAoB,CAACI,WAAW,GAAG,sBAAsB;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAA,EAAwC;EAChE,MAAM;IAAEN;EAAQ,CAAC,GAAGR,UAAU,CAACO,mBAAmB,CAAC;EAEnD,OAAOR,WAAW,CAChB,CAACgB,QAAwB,GAAG,OAAO,KAAK;IACtC,IAAI,CAACP,OAAO,IAAIN,QAAQ,CAACc,EAAE,KAAK,KAAK,EAAE;IAEvC,MAAMC,OAAO,GAAGX,gBAAgB,CAAC,CAAC;IAClC,IAAI,CAACW,OAAO,EAAE;IAEd,MAAM;MAAEC;IAAoB,CAAC,GAAGD,OAAO;IACvC,IAAIE,KAAK,GAAGD,mBAAmB,CAACE,KAAK;IACrC,IAAIlB,QAAQ,CAACc,EAAE,KAAK,SAAS,EAAE;MAC7B,IAAID,QAAQ,KAAK,QAAQ,EAAEI,KAAK,GAAGD,mBAAmB,CAACG,MAAM,CAAC,KACzD,IAAIN,QAAQ,KAAK,OAAO,EAAEI,KAAK,GAAGD,mBAAmB,CAACI,KAAK;IAClE;IAEA,KAAKL,OAAO,CAACM,WAAW,CAACJ,KAAK,CAAC;EACjC,CAAC,EACD,CAACX,OAAO,CACV,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["React","createContext","useCallback","useContext","useMemo","Platform","loadHaptics","warnHapticsUnavailable","jsx","_jsx","BloomHapticsContext","enabled","BloomHapticsProvider","children","value","Provider","displayName","useHaptics","strength","OS","haptics","ImpactFeedbackStyle","style","Light","Medium","Heavy","impactAsync"],"sourceRoot":"../../../src","sources":["hooks/useHaptics.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,WAAW,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAC9E,SAASC,QAAQ,QAAQ,cAAc;AAEvC,SAASC,WAAW,EAAEC,sBAAsB,QAAQ,qBAAkB;;AAEtE;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAOA,MAAMC,mBAAmB,gBAAGT,aAAa,CAA2B;EAAEU,OAAO,EAAE;AAAK,CAAC,CAAC;AAQtF;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAC;EAAED,OAAO,GAAG,IAAI;EAAEE;AAAoC,CAAC,EAAE;EAC5F,MAAMC,KAAK,GAAGV,OAAO,CAAC,OAAO;IAAEO;EAAQ,CAAC,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EACrD,oBAAOF,IAAA,CAACC,mBAAmB,CAACK,QAAQ;IAACD,KAAK,EAAEA,KAAM;IAAAD,QAAA,EAAEA;EAAQ,CAA+B,CAAC;AAC9F;AAEAD,oBAAoB,CAACI,WAAW,GAAG,sBAAsB;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAA,EAAwC;EAChE,MAAM;IAAEN;EAAQ,CAAC,GAAGR,UAAU,CAACO,mBAAmB,CAAC;EAEnD,OAAOR,WAAW,CAChB,CAACgB,QAAwB,GAAG,OAAO,KAAK;IACtC,IAAI,CAACP,OAAO,IAAIN,QAAQ,CAACc,EAAE,KAAK,KAAK,EAAE;IAEvC,MAAMC,OAAO,GAAGd,WAAW,CAAC,CAAC;IAC7B,IAAI,CAACc,OAAO,EAAE;MACZb,sBAAsB,CAAC,CAAC;MACxB;IACF;IAEA,MAAM;MAAEc;IAAoB,CAAC,GAAGD,OAAO;IACvC,IAAIE,KAAK,GAAGD,mBAAmB,CAACE,KAAK;IACrC,IAAIlB,QAAQ,CAACc,EAAE,KAAK,SAAS,EAAE;MAC7B,IAAID,QAAQ,KAAK,QAAQ,EAAEI,KAAK,GAAGD,mBAAmB,CAACG,MAAM,CAAC,KACzD,IAAIN,QAAQ,KAAK,OAAO,EAAEI,KAAK,GAAGD,mBAAmB,CAACI,KAAK;IAClE;IAEA,KAAKL,OAAO,CAACM,WAAW,CAACJ,KAAK,CAAC;EACjC,CAAC,EACD,CAACX,OAAO,CACV,CAAC;AACH","ignoreList":[]}
@@ -1,33 +1,27 @@
1
1
  "use strict";
2
2
 
3
3
  import React, { useEffect } from 'react';
4
- import { ActivityIndicator } from 'react-native';
5
4
  import Animated, { Easing, useAnimatedStyle, useSharedValue, withRepeat, withTiming } from 'react-native-reanimated';
6
- import { lazyRequire } from "../utils/lazy-require.js";
7
-
8
- // react-native-svg is loaded lazily so the loading module can fall back to
9
- // ActivityIndicator when the host app doesn't ship SVG support. Reanimated,
10
- // by contrast, MUST be statically imported: the worklets Babel plugin
11
- // performs build-time closure analysis (`__closure` metadata) that fails on
12
- // runtime requires, which would crash the UI thread with
13
- // "Tried to synchronously call a non-worklet function `addListener`".
5
+ import Svg, { Rect } from 'react-native-svg';
14
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
- const getSvgModule = lazyRequire('react-native-svg');
16
7
  /**
17
- * Inner component that unconditionally calls Reanimated hooks.
18
- * Only rendered when react-native-svg is available.
8
+ * iOS-style SVG spinner with 8 rotating rectangles and an opacity gradient trail.
9
+ *
10
+ * `react-native-svg` and `react-native-reanimated` are both REQUIRED peers and
11
+ * both are imported statically. Reanimated in particular must never be loaded at
12
+ * runtime: the worklets Babel plugin performs build-time closure analysis
13
+ * (`__closure` metadata) that fails on a runtime require, which crashes the UI
14
+ * thread with "Tried to synchronously call a non-worklet function `addListener`".
15
+ *
16
+ * Native only — `SpinnerIcon.web.tsx` draws the same shape with CSS, so this
17
+ * file is never reached by a web bundler.
19
18
  */
20
- const AnimatedSpinner = ({
19
+ export const SpinnerIcon = ({
21
20
  color = 'currentColor',
22
21
  size = 26,
23
22
  className,
24
- style,
25
- svg
23
+ style
26
24
  }) => {
27
- const {
28
- default: Svg,
29
- Rect
30
- } = svg;
31
25
  const rotation = useSharedValue(0);
32
26
  useEffect(() => {
33
27
  rotation.value = withRepeat(withTiming(360, {
@@ -145,32 +139,5 @@ const AnimatedSpinner = ({
145
139
  })
146
140
  });
147
141
  };
148
-
149
- /**
150
- * iOS-style SVG spinner with 8 rotating rectangles and an opacity gradient trail.
151
- * Requires react-native-svg (lazy) and react-native-reanimated (static).
152
- * Falls back to ActivityIndicator if react-native-svg is missing.
153
- */
154
- export const SpinnerIcon = ({
155
- color = 'currentColor',
156
- size = 26,
157
- className,
158
- style
159
- }) => {
160
- const svg = getSvgModule();
161
- if (!svg) {
162
- return /*#__PURE__*/_jsx(ActivityIndicator, {
163
- size: size > 30 ? 'large' : 'small',
164
- color: color
165
- });
166
- }
167
- return /*#__PURE__*/_jsx(AnimatedSpinner, {
168
- color: color,
169
- size: size,
170
- className: className,
171
- style: style,
172
- svg: svg
173
- });
174
- };
175
142
  SpinnerIcon.displayName = 'SpinnerIcon';
176
143
  //# sourceMappingURL=SpinnerIcon.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","ActivityIndicator","Animated","Easing","useAnimatedStyle","useSharedValue","withRepeat","withTiming","lazyRequire","jsx","_jsx","jsxs","_jsxs","getSvgModule","AnimatedSpinner","color","size","className","style","svg","default","Svg","Rect","rotation","value","duration","easing","linear","animatedStyle","transform","rotate","View","width","height","alignItems","justifyContent","children","viewBox","fill","opacity","rx","ry","x","y","SpinnerIcon","displayName"],"sourceRoot":"../../../src","sources":["loading/SpinnerIcon.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","Animated","Easing","useAnimatedStyle","useSharedValue","withRepeat","withTiming","Svg","Rect","jsx","_jsx","jsxs","_jsxs","SpinnerIcon","color","size","className","style","rotation","value","duration","easing","linear","animatedStyle","transform","rotate","View","width","height","alignItems","justifyContent","children","viewBox","fill","opacity","rx","ry","x","y","displayName"],"sourceRoot":"../../../src","sources":["loading/SpinnerIcon.tsx"],"mappings":"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","ignoreList":[]}
@@ -3,8 +3,8 @@
3
3
  // Web variant of the `./loading` barrel.
4
4
  //
5
5
  // The default barrel (`./index.ts`) re-exports from `./Loading` and
6
- // `./SpinnerIcon`, which statically import `react-native-reanimated` (and lazily
7
- // `react-native-svg`). Reanimated has no web build — its worklets Babel plugin
6
+ // `./SpinnerIcon`, which statically import `react-native-reanimated` and
7
+ // `react-native-svg`. Reanimated has no web build — its worklets Babel plugin
8
8
  // is native-only and importing it statically breaks every web bundler (Vite,
9
9
  // webpack, Metro-web). The web forks (`./Loading.web`, `./SpinnerIcon.web`)
10
10
  // render the same components with CSS keyframes/transitions and no native deps.
@@ -1,14 +1,31 @@
1
1
  "use strict";
2
2
 
3
3
  import { Platform } from 'react-native';
4
+ /**
5
+ * `expo-router`'s `Color` proxy is read through a `require()` of a STRING
6
+ * LITERAL as a direct statement of a `try` block — the shape Metro collects as
7
+ * an optional dependency, resolving the real module when installed and writing
8
+ * `null` into the dependency map when it is not, so an app without the optional
9
+ * `expo-router` peer loses the adaptive palette and nothing else.
10
+ *
11
+ * The specifier was previously bound to a local `const` first. That still
12
+ * worked — Metro evaluates the constant — but the literal is what the rule can
13
+ * be stated and checked as, and it does not rest on a constant-folding pass
14
+ * every bundler happens to share. What must never come back is a specifier
15
+ * Metro CANNOT evaluate (a function parameter, a computed value): it collects no
16
+ * dependency and rewrites the call into a thrower, so it resolves nothing on any
17
+ * device.
18
+ *
19
+ * @see connection-status/netinfo.ts — the same boundary, with the full rule.
20
+ */
21
+
4
22
  const c = v => v;
5
23
  function getAndroidColors() {
6
24
  try {
7
25
  if (typeof require === 'undefined') return null;
8
- const moduleName = 'expo-router';
9
26
  const {
10
27
  Color
11
- } = require(moduleName);
28
+ } = require('expo-router');
12
29
  const d = Color.android.dynamic;
13
30
  return {
14
31
  background: c(d.surface),
@@ -52,10 +69,9 @@ function getAndroidColors() {
52
69
  function getIOSColors() {
53
70
  try {
54
71
  if (typeof require === 'undefined') return null;
55
- const moduleName = 'expo-router';
56
72
  const {
57
73
  Color
58
- } = require(moduleName);
74
+ } = require('expo-router');
59
75
  const i = Color.ios;
60
76
  return {
61
77
  background: c(i.systemBackground),
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","c","v","getAndroidColors","require","moduleName","Color","d","android","dynamic","background","surface","backgroundSecondary","surfaceContainerLow","backgroundTertiary","surfaceContainer","text","onSurface","textSecondary","onSurfaceVariant","textTertiary","outline","border","outlineVariant","borderLight","primary","primaryForeground","onPrimary","primaryLight","primaryContainer","primaryDark","onPrimaryContainer","secondary","secondaryForeground","onSecondary","tertiary","tertiaryForeground","onTertiary","tint","icon","iconActive","success","error","warning","info","primarySubtle","primarySubtleForeground","negative","negativeForeground","negativeSubtle","errorContainer","negativeSubtleForeground","onErrorContainer","contrast50","card","shadow","overlay","getIOSColors","i","ios","systemBackground","secondarySystemBackground","tertiarySystemBackground","label","secondaryLabel","tertiaryLabel","separator","opaqueSeparator","systemBlue","systemGray6","systemPurple","systemTeal","systemGreen","systemRed","systemOrange","getAdaptiveColors","OS"],"sourceRoot":"../../../src","sources":["theme/adaptive-colors.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","c","v","getAndroidColors","require","Color","d","android","dynamic","background","surface","backgroundSecondary","surfaceContainerLow","backgroundTertiary","surfaceContainer","text","onSurface","textSecondary","onSurfaceVariant","textTertiary","outline","border","outlineVariant","borderLight","primary","primaryForeground","onPrimary","primaryLight","primaryContainer","primaryDark","onPrimaryContainer","secondary","secondaryForeground","onSecondary","tertiary","tertiaryForeground","onTertiary","tint","icon","iconActive","success","error","warning","info","primarySubtle","primarySubtleForeground","negative","negativeForeground","negativeSubtle","errorContainer","negativeSubtleForeground","onErrorContainer","contrast50","card","shadow","overlay","getIOSColors","i","ios","systemBackground","secondarySystemBackground","tertiarySystemBackground","label","secondaryLabel","tertiaryLabel","separator","opaqueSeparator","systemBlue","systemGray6","systemPurple","systemTeal","systemGreen","systemRed","systemOrange","getAdaptiveColors","OS"],"sourceRoot":"../../../src","sources":["theme/adaptive-colors.ts"],"mappings":"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","ignoreList":[]}