@oxyhq/services 12.1.1 → 13.0.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 (150) hide show
  1. package/lib/commonjs/index.js +73 -6
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/ui/components/AccountMenuButton.js +26 -9
  4. package/lib/commonjs/ui/components/AccountMenuButton.js.map +1 -1
  5. package/lib/commonjs/ui/components/AccountSwitcher.js +792 -0
  6. package/lib/commonjs/ui/components/AccountSwitcher.js.map +1 -0
  7. package/lib/commonjs/ui/components/ActiveAccountBanner.js +144 -0
  8. package/lib/commonjs/ui/components/ActiveAccountBanner.js.map +1 -0
  9. package/lib/commonjs/ui/components/SignInModal.js +9 -2
  10. package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
  11. package/lib/commonjs/ui/context/OxyContext.js +72 -27
  12. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  13. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +8 -0
  14. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  15. package/lib/commonjs/ui/index.js +42 -0
  16. package/lib/commonjs/ui/index.js.map +1 -1
  17. package/lib/commonjs/ui/navigation/routes.js +4 -1
  18. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  19. package/lib/commonjs/ui/screens/AccountMembersScreen.js +469 -0
  20. package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -0
  21. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +264 -0
  22. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -0
  23. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +51 -0
  24. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -0
  25. package/lib/commonjs/ui/screens/{CreateManagedAccountScreen.js → CreateAccountScreen.js} +116 -25
  26. package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -0
  27. package/lib/commonjs/ui/screens/ManageAccountScreen.js +11 -11
  28. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  29. package/lib/commonjs/ui/screens/OxyAuthScreen.js +10 -2
  30. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  31. package/lib/commonjs/utils/crossApex.js +74 -0
  32. package/lib/commonjs/utils/crossApex.js.map +1 -0
  33. package/lib/module/index.js +21 -4
  34. package/lib/module/index.js.map +1 -1
  35. package/lib/module/ui/components/AccountMenuButton.js +26 -9
  36. package/lib/module/ui/components/AccountMenuButton.js.map +1 -1
  37. package/lib/module/ui/components/AccountSwitcher.js +786 -0
  38. package/lib/module/ui/components/AccountSwitcher.js.map +1 -0
  39. package/lib/module/ui/components/ActiveAccountBanner.js +141 -0
  40. package/lib/module/ui/components/ActiveAccountBanner.js.map +1 -0
  41. package/lib/module/ui/components/SignInModal.js +9 -2
  42. package/lib/module/ui/components/SignInModal.js.map +1 -1
  43. package/lib/module/ui/context/OxyContext.js +72 -27
  44. package/lib/module/ui/context/OxyContext.js.map +1 -1
  45. package/lib/module/ui/context/hooks/useAuthOperations.js +8 -0
  46. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  47. package/lib/module/ui/index.js +5 -0
  48. package/lib/module/ui/index.js.map +1 -1
  49. package/lib/module/ui/navigation/routes.js +4 -1
  50. package/lib/module/ui/navigation/routes.js.map +1 -1
  51. package/lib/module/ui/screens/AccountMembersScreen.js +464 -0
  52. package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -0
  53. package/lib/module/ui/screens/AccountSettingsScreen.js +259 -0
  54. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -0
  55. package/lib/module/ui/screens/AccountSwitcherScreen.js +48 -0
  56. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -0
  57. package/lib/module/ui/screens/{CreateManagedAccountScreen.js → CreateAccountScreen.js} +117 -26
  58. package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -0
  59. package/lib/module/ui/screens/ManageAccountScreen.js +11 -11
  60. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  61. package/lib/module/ui/screens/OxyAuthScreen.js +10 -2
  62. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  63. package/lib/module/utils/crossApex.js +69 -0
  64. package/lib/module/utils/crossApex.js.map +1 -0
  65. package/lib/typescript/commonjs/index.d.ts +8 -1
  66. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  67. package/lib/typescript/commonjs/ui/components/AccountMenuButton.d.ts +13 -4
  68. package/lib/typescript/commonjs/ui/components/AccountMenuButton.d.ts.map +1 -1
  69. package/lib/typescript/commonjs/ui/components/AccountSwitcher.d.ts +47 -0
  70. package/lib/typescript/commonjs/ui/components/AccountSwitcher.d.ts.map +1 -0
  71. package/lib/typescript/commonjs/ui/components/{ActingAsBanner.d.ts → ActiveAccountBanner.d.ts} +1 -1
  72. package/lib/typescript/commonjs/ui/components/ActiveAccountBanner.d.ts.map +1 -0
  73. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
  74. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +33 -5
  75. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  76. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  78. package/lib/typescript/commonjs/ui/index.d.ts +5 -0
  79. package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
  81. package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/ui/screens/AccountMembersScreen.d.ts +10 -0
  83. package/lib/typescript/commonjs/ui/screens/AccountMembersScreen.d.ts.map +1 -0
  84. package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts +12 -0
  85. package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -0
  86. package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts +11 -0
  87. package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts.map +1 -0
  88. package/lib/typescript/commonjs/ui/screens/CreateAccountScreen.d.ts +11 -0
  89. package/lib/typescript/commonjs/ui/screens/CreateAccountScreen.d.ts.map +1 -0
  90. package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  91. package/lib/typescript/commonjs/utils/crossApex.d.ts +55 -0
  92. package/lib/typescript/commonjs/utils/crossApex.d.ts.map +1 -0
  93. package/lib/typescript/module/index.d.ts +8 -1
  94. package/lib/typescript/module/index.d.ts.map +1 -1
  95. package/lib/typescript/module/ui/components/AccountMenuButton.d.ts +13 -4
  96. package/lib/typescript/module/ui/components/AccountMenuButton.d.ts.map +1 -1
  97. package/lib/typescript/module/ui/components/AccountSwitcher.d.ts +47 -0
  98. package/lib/typescript/module/ui/components/AccountSwitcher.d.ts.map +1 -0
  99. package/lib/typescript/module/ui/components/{ActingAsBanner.d.ts → ActiveAccountBanner.d.ts} +1 -1
  100. package/lib/typescript/module/ui/components/ActiveAccountBanner.d.ts.map +1 -0
  101. package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
  102. package/lib/typescript/module/ui/context/OxyContext.d.ts +33 -5
  103. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  104. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  105. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  106. package/lib/typescript/module/ui/index.d.ts +5 -0
  107. package/lib/typescript/module/ui/index.d.ts.map +1 -1
  108. package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
  109. package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
  110. package/lib/typescript/module/ui/screens/AccountMembersScreen.d.ts +10 -0
  111. package/lib/typescript/module/ui/screens/AccountMembersScreen.d.ts.map +1 -0
  112. package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts +12 -0
  113. package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -0
  114. package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts +11 -0
  115. package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts.map +1 -0
  116. package/lib/typescript/module/ui/screens/CreateAccountScreen.d.ts +11 -0
  117. package/lib/typescript/module/ui/screens/CreateAccountScreen.d.ts.map +1 -0
  118. package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  119. package/lib/typescript/module/utils/crossApex.d.ts +55 -0
  120. package/lib/typescript/module/utils/crossApex.d.ts.map +1 -0
  121. package/package.json +3 -3
  122. package/src/index.ts +22 -4
  123. package/src/ui/components/AccountMenuButton.tsx +25 -10
  124. package/src/ui/components/AccountSwitcher.tsx +763 -0
  125. package/src/ui/components/ActiveAccountBanner.tsx +130 -0
  126. package/src/ui/components/SignInModal.tsx +18 -6
  127. package/src/ui/context/OxyContext.tsx +121 -35
  128. package/src/ui/context/hooks/useAuthOperations.ts +8 -0
  129. package/src/ui/index.ts +5 -0
  130. package/src/ui/navigation/routes.ts +8 -2
  131. package/src/ui/screens/AccountMembersScreen.tsx +481 -0
  132. package/src/ui/screens/AccountSettingsScreen.tsx +261 -0
  133. package/src/ui/screens/AccountSwitcherScreen.tsx +43 -0
  134. package/src/ui/screens/{CreateManagedAccountScreen.tsx → CreateAccountScreen.tsx} +140 -22
  135. package/src/ui/screens/ManageAccountScreen.tsx +19 -19
  136. package/src/ui/screens/OxyAuthScreen.tsx +20 -6
  137. package/src/utils/crossApex.ts +75 -0
  138. package/lib/commonjs/ui/components/ActingAsBanner.js +0 -140
  139. package/lib/commonjs/ui/components/ActingAsBanner.js.map +0 -1
  140. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js.map +0 -1
  141. package/lib/module/ui/components/ActingAsBanner.js +0 -137
  142. package/lib/module/ui/components/ActingAsBanner.js.map +0 -1
  143. package/lib/module/ui/screens/CreateManagedAccountScreen.js.map +0 -1
  144. package/lib/typescript/commonjs/ui/components/ActingAsBanner.d.ts.map +0 -1
  145. package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts +0 -5
  146. package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts.map +0 -1
  147. package/lib/typescript/module/ui/components/ActingAsBanner.d.ts.map +0 -1
  148. package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts +0 -5
  149. package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts.map +0 -1
  150. package/src/ui/components/ActingAsBanner.tsx +0 -129
@@ -29,6 +29,7 @@ import OxyLogo from '../components/OxyLogo';
29
29
  import AnotherDeviceQR from '../components/AnotherDeviceQR';
30
30
  import LoadingState from '../components/LoadingState';
31
31
  import { useOxyAuthSession, OXY_ACCOUNTS_WEB_URL } from '../hooks/useOxyAuthSession';
32
+ import { isCrossApexWeb } from '../../utils/crossApex';
32
33
 
33
34
  const OxyAuthScreen: React.FC<BaseScreenProps> = ({ goBack, onAuthenticated }) => {
34
35
  const bloomTheme = useTheme();
@@ -41,6 +42,13 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({ goBack, onAuthenticated }) =
41
42
  { onSignedIn: onAuthenticated },
42
43
  );
43
44
 
45
+ // On a cross-apex web RP, only the "Continue with Oxy" IdP popup establishes a
46
+ // durable `fedcm_session`. The Commons-app handoffs (same-device deep-link +
47
+ // cross-device QR) approve OUTSIDE the browser, so they leave no IdP session
48
+ // and the user would be logged out on reload — hide them there. Off-browser
49
+ // (native) this is always `false`, so the bottom sheet is unchanged.
50
+ const crossApexWeb = isCrossApexWeb();
51
+
44
52
  if (isLoading) {
45
53
  return (
46
54
  <View className="flex-1 items-center justify-center bg-bg">
@@ -104,8 +112,10 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({ goBack, onAuthenticated }) =
104
112
  </Button>
105
113
 
106
114
  {/* Same-device "Sign in with Oxy" handoff — deep-links into the native Oxy
107
- app to approve. Shown only when the handoff backend returned a payload. */}
108
- {qrPayload && (
115
+ app to approve. Shown only when the handoff backend returned a payload,
116
+ and never on a cross-apex web RP (approval happens outside the browser
117
+ → no durable session). */}
118
+ {!crossApexWeb && qrPayload && (
109
119
  <Button
110
120
  variant="secondary"
111
121
  size="large"
@@ -130,10 +140,14 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({ goBack, onAuthenticated }) =
130
140
  </View>
131
141
  )}
132
142
 
133
- {/* Collapsed "sign in on another device" QR disclosure */}
134
- <View className="w-full mt-space-24">
135
- <AnotherDeviceQR qrData={qrData} qrPayload={qrPayload} />
136
- </View>
143
+ {/* Collapsed "sign in on another device" QR disclosure. Hidden on a
144
+ cross-apex web RP: a remote Commons-app approval completes via the
145
+ device-flow claim, which plants no `fedcm_session`. */}
146
+ {!crossApexWeb && (
147
+ <View className="w-full mt-space-24">
148
+ <AnotherDeviceQR qrData={qrData} qrPayload={qrPayload} />
149
+ </View>
150
+ )}
137
151
 
138
152
  {/* Footer — create an account */}
139
153
  <View className="flex-row flex-wrap justify-center items-center mt-space-24">
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Cross-apex web detection for sign-in durability gating.
3
+ *
4
+ * On a web Relying Party whose registrable apex differs from the central Oxy
5
+ * Identity Provider apex (`oxy.so`), the ONLY sign-in completion that survives a
6
+ * page reload is the interactive "Continue with Oxy" IdP flow, because it is the
7
+ * only one that establishes a first-party `fedcm_session` cookie at
8
+ * `auth.<apex>` — the anchor the cross-domain cold-boot restore reads on reload.
9
+ *
10
+ * The other sign-in completions the SDK can drive do NOT plant a `fedcm_session`:
11
+ * - password / public-key sign-in mints a bearer directly against the Oxy API
12
+ * (its refresh cookie is host-scoped to `api.oxy.so` and `SameSite=Lax`, so
13
+ * it is unreachable cross-site from the RP), and
14
+ * - the Commons-app device-flow handoff (cross-device QR / same-device
15
+ * deep-link) is approved OUTSIDE the browser, so no IdP browser session is
16
+ * established.
17
+ * On a cross-apex RP each of these leaves the user signed in for the current
18
+ * page only — a reload logs them out. See OxyHQServices AGENTS.md
19
+ * "Auth / Session Contract".
20
+ *
21
+ * Same-apex `*.oxy.so` apps (e.g. `accounts.oxy.so`) are first-party with
22
+ * `api.oxy.so`: their refresh cookie rides same-site requests so reload restore
23
+ * works without `fedcm_session`, and they are therefore NOT gated.
24
+ *
25
+ * Returns `false` off-browser (React Native has no `window.location`) and for
26
+ * hosts without a registrable apex (localhost / raw IP / single-label dev
27
+ * hosts), so native and local development keep every sign-in method.
28
+ */
29
+
30
+ import { registrableApex, CENTRAL_IDP_APEX } from '@oxyhq/core';
31
+
32
+ /**
33
+ * Whether the given host is a web RP on a registrable apex other than the
34
+ * central Oxy IdP apex (`oxy.so`). See the module doc for why this gates the
35
+ * non-durable sign-in paths.
36
+ *
37
+ * @param hostname - The host to classify. Defaults to the current
38
+ * `window.location.hostname`; resolves to `undefined` off-browser (React
39
+ * Native / SSR), which yields `false`. The explicit parameter mirrors
40
+ * `autoDetectAuthWebUrl(location?)` and keeps the predicate unit-testable
41
+ * without manipulating the global `window.location`.
42
+ */
43
+ export function isCrossApexWeb(
44
+ hostname: string | undefined = typeof window !== 'undefined'
45
+ ? window.location?.hostname
46
+ : undefined,
47
+ ): boolean {
48
+ if (!hostname) {
49
+ return false;
50
+ }
51
+ const apex = registrableApex(hostname);
52
+ return apex !== null && apex !== CENTRAL_IDP_APEX;
53
+ }
54
+
55
+ /**
56
+ * Thrown when an app attempts a direct (non-IdP) sign-in — password or
57
+ * public-key — on a cross-apex web RP, where such a sign-in would not survive a
58
+ * page reload because no `fedcm_session` is established (see {@link isCrossApexWeb}).
59
+ *
60
+ * Apps on a cross-apex apex must sign in through the interactive
61
+ * "Continue with Oxy" IdP flow (`OxySignInButton` / `showSignInModal()`), which
62
+ * plants the durable session.
63
+ */
64
+ export class CrossApexDirectSignInError extends Error {
65
+ override readonly name = 'CrossApexDirectSignInError';
66
+ readonly code = 'CROSS_APEX_DIRECT_SIGN_IN_UNSUPPORTED';
67
+
68
+ constructor() {
69
+ super(
70
+ 'Direct sign-in is unavailable on this domain because the session would ' +
71
+ 'not survive a page reload. Use "Continue with Oxy" to sign in through ' +
72
+ 'the Oxy identity provider.',
73
+ );
74
+ }
75
+ }
@@ -1,140 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _reactNative = require("react-native");
9
- var _theme = require("@oxyhq/bloom/theme");
10
- var _OxyContext = require("../context/OxyContext.js");
11
- var _core = require("@oxyhq/core");
12
- var _jsxRuntime = require("react/jsx-runtime");
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
- /**
15
- * ActingAsBanner - Shows a subtle banner when the user is acting as a managed account.
16
- *
17
- * - Tap to open the ManageAccount screen (account switcher lives in AccountMenu).
18
- * - Long-press to switch back to the primary account immediately.
19
- *
20
- * Place this component in your app's layout where you want the banner to appear
21
- * (typically at the top of the screen or below the header).
22
- */const ActingAsBanner = () => {
23
- const bloomTheme = (0, _theme.useTheme)();
24
- const {
25
- actingAs,
26
- managedAccounts,
27
- setActingAs,
28
- showBottomSheet,
29
- oxyServices
30
- } = (0, _OxyContext.useOxy)();
31
- const activeAccount = (0, _react.useMemo)(() => {
32
- if (!actingAs || !managedAccounts.length) return null;
33
- const managed = managedAccounts.find(m => m.accountId === actingAs);
34
- return managed?.account ?? null;
35
- }, [actingAs, managedAccounts]);
36
- if (!actingAs || !activeAccount) {
37
- return null;
38
- }
39
- const displayName = (0, _core.getAccountDisplayName)(activeAccount);
40
- const handlePress = () => {
41
- showBottomSheet?.('ManageAccount');
42
- };
43
- const handleLongPress = () => {
44
- setActingAs(null);
45
- };
46
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
47
- style: [styles.container, {
48
- backgroundColor: bloomTheme.colors.primary + '14'
49
- }],
50
- onPress: handlePress,
51
- onLongPress: handleLongPress,
52
- activeOpacity: 0.7,
53
- accessibilityRole: "button",
54
- accessibilityLabel: `Acting as ${displayName}. Tap to switch accounts, long press to switch back.`,
55
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
56
- style: styles.content,
57
- children: [activeAccount.avatar ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
58
- source: {
59
- uri: oxyServices.getFileDownloadUrl(activeAccount.avatar, 'thumb')
60
- },
61
- style: styles.avatar
62
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
63
- style: [styles.avatarFallback, {
64
- backgroundColor: bloomTheme.colors.primary + '30'
65
- }],
66
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
67
- style: [styles.avatarText, {
68
- color: bloomTheme.colors.primary
69
- }],
70
- children: displayName.charAt(0).toUpperCase()
71
- })
72
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
73
- style: styles.textContainer,
74
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
75
- style: [styles.label, {
76
- color: bloomTheme.colors.primary
77
- }],
78
- numberOfLines: 1,
79
- children: ["Acting as ", displayName]
80
- })
81
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
82
- style: [styles.switchBackHint, {
83
- borderColor: bloomTheme.colors.primary + '40'
84
- }],
85
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
86
- style: [styles.switchBackText, {
87
- color: bloomTheme.colors.primary
88
- }],
89
- children: "Switch back"
90
- })
91
- })]
92
- })
93
- });
94
- };
95
- const styles = _reactNative.StyleSheet.create({
96
- container: {
97
- paddingHorizontal: 16,
98
- paddingVertical: 10
99
- },
100
- content: {
101
- flexDirection: 'row',
102
- alignItems: 'center'
103
- },
104
- avatar: {
105
- width: 24,
106
- height: 24,
107
- borderRadius: 12
108
- },
109
- avatarFallback: {
110
- width: 24,
111
- height: 24,
112
- borderRadius: 12,
113
- alignItems: 'center',
114
- justifyContent: 'center'
115
- },
116
- avatarText: {
117
- fontSize: 12,
118
- fontWeight: _reactNative.Platform.OS === 'web' ? '600' : undefined
119
- },
120
- textContainer: {
121
- flex: 1,
122
- marginLeft: 10
123
- },
124
- label: {
125
- fontSize: 14,
126
- fontWeight: _reactNative.Platform.OS === 'web' ? '500' : undefined
127
- },
128
- switchBackHint: {
129
- borderWidth: 1,
130
- borderRadius: 12,
131
- paddingHorizontal: 10,
132
- paddingVertical: 4
133
- },
134
- switchBackText: {
135
- fontSize: 12,
136
- fontWeight: _reactNative.Platform.OS === 'web' ? '500' : undefined
137
- }
138
- });
139
- var _default = exports.default = /*#__PURE__*/_react.default.memo(ActingAsBanner);
140
- //# sourceMappingURL=ActingAsBanner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_theme","_OxyContext","_core","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ActingAsBanner","bloomTheme","useTheme","actingAs","managedAccounts","setActingAs","showBottomSheet","oxyServices","useOxy","activeAccount","useMemo","length","managed","find","m","accountId","account","displayName","getAccountDisplayName","handlePress","handleLongPress","jsx","TouchableOpacity","style","styles","container","backgroundColor","colors","primary","onPress","onLongPress","activeOpacity","accessibilityRole","accessibilityLabel","children","jsxs","View","content","avatar","Image","source","uri","getFileDownloadUrl","avatarFallback","Text","avatarText","color","charAt","toUpperCase","textContainer","label","numberOfLines","switchBackHint","borderColor","switchBackText","StyleSheet","create","paddingHorizontal","paddingVertical","flexDirection","alignItems","width","height","borderRadius","justifyContent","fontSize","fontWeight","Platform","OS","undefined","flex","marginLeft","borderWidth","_default","exports","React","memo"],"sourceRoot":"../../../../src","sources":["ui/components/ActingAsBanner.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","require","_reactNative","_vectorIcons","_Header","_interopRequireDefault","_useI18n","_theme","_typography","_button","_textField","_OxyContext","_bloom","_jsxRuntime","e","__esModule","default","USERNAME_REGEX","DEBOUNCE_MS","USERNAME_MAX","DISPLAY_NAME_MAX","BIO_MAX","CreateManagedAccountScreen","onClose","goBack","bloomTheme","useTheme","oxyServices","createManagedAccount","setActingAs","useOxy","t","useI18n","username","setUsername","useState","displayName","setDisplayName","bio","setBio","usernameStatus","setUsernameStatus","usernameMessage","setUsernameMessage","isCreating","setIsCreating","debounceTimerRef","useRef","checkUsername","useCallback","value","current","clearTimeout","length","test","setTimeout","result","checkUsernameAvailability","available","message","handleUsernameChange","cleaned","toLowerCase","replace","useEffect","canCreate","trim","handleCreate","nameParts","split","firstName","lastName","slice","join","undefined","account","name","first","last","toast","success","accountId","error","Error","usernameIsInvalid","statusColor","colors","negative","textSecondary","jsxs","View","className","children","jsx","title","onBack","showBackButton","showCloseButton","elevation","KeyboardAvoidingView","behavior","Platform","OS","keyboardVerticalOffset","ScrollView","contentContainerClassName","showsVerticalScrollIndicator","keyboardShouldPersistTaps","H1","Text","TextField","isInvalid","TextFieldInput","floatingLabel","label","onChangeText","autoCapitalize","autoCorrect","autoComplete","maxLength","ActivityIndicator","size","color","primary","Ionicons","style","multiline","numberOfLines","textAlignVertical","Button","variant","onPress","disabled","loading","accessibilityLabel","_default","exports"],"sourceRoot":"../../../../src","sources":["ui/screens/CreateManagedAccountScreen.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,137 +0,0 @@
1
- "use strict";
2
-
3
- import React, { useMemo } from 'react';
4
- import { View, Text, TouchableOpacity, StyleSheet, Platform, Image } from 'react-native';
5
- import { useTheme } from '@oxyhq/bloom/theme';
6
- import { useOxy } from "../context/OxyContext.js";
7
- import { getAccountDisplayName } from '@oxyhq/core';
8
-
9
- /**
10
- * ActingAsBanner - Shows a subtle banner when the user is acting as a managed account.
11
- *
12
- * - Tap to open the ManageAccount screen (account switcher lives in AccountMenu).
13
- * - Long-press to switch back to the primary account immediately.
14
- *
15
- * Place this component in your app's layout where you want the banner to appear
16
- * (typically at the top of the screen or below the header).
17
- */
18
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
- const ActingAsBanner = () => {
20
- const bloomTheme = useTheme();
21
- const {
22
- actingAs,
23
- managedAccounts,
24
- setActingAs,
25
- showBottomSheet,
26
- oxyServices
27
- } = useOxy();
28
- const activeAccount = useMemo(() => {
29
- if (!actingAs || !managedAccounts.length) return null;
30
- const managed = managedAccounts.find(m => m.accountId === actingAs);
31
- return managed?.account ?? null;
32
- }, [actingAs, managedAccounts]);
33
- if (!actingAs || !activeAccount) {
34
- return null;
35
- }
36
- const displayName = getAccountDisplayName(activeAccount);
37
- const handlePress = () => {
38
- showBottomSheet?.('ManageAccount');
39
- };
40
- const handleLongPress = () => {
41
- setActingAs(null);
42
- };
43
- return /*#__PURE__*/_jsx(TouchableOpacity, {
44
- style: [styles.container, {
45
- backgroundColor: bloomTheme.colors.primary + '14'
46
- }],
47
- onPress: handlePress,
48
- onLongPress: handleLongPress,
49
- activeOpacity: 0.7,
50
- accessibilityRole: "button",
51
- accessibilityLabel: `Acting as ${displayName}. Tap to switch accounts, long press to switch back.`,
52
- children: /*#__PURE__*/_jsxs(View, {
53
- style: styles.content,
54
- children: [activeAccount.avatar ? /*#__PURE__*/_jsx(Image, {
55
- source: {
56
- uri: oxyServices.getFileDownloadUrl(activeAccount.avatar, 'thumb')
57
- },
58
- style: styles.avatar
59
- }) : /*#__PURE__*/_jsx(View, {
60
- style: [styles.avatarFallback, {
61
- backgroundColor: bloomTheme.colors.primary + '30'
62
- }],
63
- children: /*#__PURE__*/_jsx(Text, {
64
- style: [styles.avatarText, {
65
- color: bloomTheme.colors.primary
66
- }],
67
- children: displayName.charAt(0).toUpperCase()
68
- })
69
- }), /*#__PURE__*/_jsx(View, {
70
- style: styles.textContainer,
71
- children: /*#__PURE__*/_jsxs(Text, {
72
- style: [styles.label, {
73
- color: bloomTheme.colors.primary
74
- }],
75
- numberOfLines: 1,
76
- children: ["Acting as ", displayName]
77
- })
78
- }), /*#__PURE__*/_jsx(View, {
79
- style: [styles.switchBackHint, {
80
- borderColor: bloomTheme.colors.primary + '40'
81
- }],
82
- children: /*#__PURE__*/_jsx(Text, {
83
- style: [styles.switchBackText, {
84
- color: bloomTheme.colors.primary
85
- }],
86
- children: "Switch back"
87
- })
88
- })]
89
- })
90
- });
91
- };
92
- const styles = StyleSheet.create({
93
- container: {
94
- paddingHorizontal: 16,
95
- paddingVertical: 10
96
- },
97
- content: {
98
- flexDirection: 'row',
99
- alignItems: 'center'
100
- },
101
- avatar: {
102
- width: 24,
103
- height: 24,
104
- borderRadius: 12
105
- },
106
- avatarFallback: {
107
- width: 24,
108
- height: 24,
109
- borderRadius: 12,
110
- alignItems: 'center',
111
- justifyContent: 'center'
112
- },
113
- avatarText: {
114
- fontSize: 12,
115
- fontWeight: Platform.OS === 'web' ? '600' : undefined
116
- },
117
- textContainer: {
118
- flex: 1,
119
- marginLeft: 10
120
- },
121
- label: {
122
- fontSize: 14,
123
- fontWeight: Platform.OS === 'web' ? '500' : undefined
124
- },
125
- switchBackHint: {
126
- borderWidth: 1,
127
- borderRadius: 12,
128
- paddingHorizontal: 10,
129
- paddingVertical: 4
130
- },
131
- switchBackText: {
132
- fontSize: 12,
133
- fontWeight: Platform.OS === 'web' ? '500' : undefined
134
- }
135
- });
136
- export default /*#__PURE__*/React.memo(ActingAsBanner);
137
- //# sourceMappingURL=ActingAsBanner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","useMemo","View","Text","TouchableOpacity","StyleSheet","Platform","Image","useTheme","useOxy","getAccountDisplayName","jsx","_jsx","jsxs","_jsxs","ActingAsBanner","bloomTheme","actingAs","managedAccounts","setActingAs","showBottomSheet","oxyServices","activeAccount","length","managed","find","m","accountId","account","displayName","handlePress","handleLongPress","style","styles","container","backgroundColor","colors","primary","onPress","onLongPress","activeOpacity","accessibilityRole","accessibilityLabel","children","content","avatar","source","uri","getFileDownloadUrl","avatarFallback","avatarText","color","charAt","toUpperCase","textContainer","label","numberOfLines","switchBackHint","borderColor","switchBackText","create","paddingHorizontal","paddingVertical","flexDirection","alignItems","width","height","borderRadius","justifyContent","fontSize","fontWeight","OS","undefined","flex","marginLeft","borderWidth","memo"],"sourceRoot":"../../../../src","sources":["ui/components/ActingAsBanner.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["useState","useCallback","useRef","useEffect","View","Platform","ActivityIndicator","ScrollView","KeyboardAvoidingView","Ionicons","Header","useI18n","useTheme","H1","Text","Button","TextField","TextFieldInput","useOxy","toast","jsx","_jsx","jsxs","_jsxs","USERNAME_REGEX","DEBOUNCE_MS","USERNAME_MAX","DISPLAY_NAME_MAX","BIO_MAX","CreateManagedAccountScreen","onClose","goBack","bloomTheme","oxyServices","createManagedAccount","setActingAs","t","username","setUsername","displayName","setDisplayName","bio","setBio","usernameStatus","setUsernameStatus","usernameMessage","setUsernameMessage","isCreating","setIsCreating","debounceTimerRef","checkUsername","value","current","clearTimeout","length","test","setTimeout","result","checkUsernameAvailability","available","message","handleUsernameChange","cleaned","toLowerCase","replace","canCreate","trim","handleCreate","nameParts","split","firstName","lastName","slice","join","undefined","account","name","first","last","success","accountId","error","Error","usernameIsInvalid","statusColor","colors","negative","textSecondary","className","children","title","onBack","showBackButton","showCloseButton","elevation","behavior","OS","keyboardVerticalOffset","contentContainerClassName","showsVerticalScrollIndicator","keyboardShouldPersistTaps","isInvalid","floatingLabel","label","onChangeText","autoCapitalize","autoCorrect","autoComplete","maxLength","size","color","primary","style","multiline","numberOfLines","textAlignVertical","variant","onPress","disabled","loading","accessibilityLabel"],"sourceRoot":"../../../../src","sources":["ui/screens/CreateManagedAccountScreen.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActingAsBanner.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/ActingAsBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;;AAgIvC,wBAA0C"}
@@ -1,5 +0,0 @@
1
- import type React from 'react';
2
- import type { BaseScreenProps } from '../types/navigation';
3
- declare const CreateManagedAccountScreen: React.FC<BaseScreenProps>;
4
- export default CreateManagedAccountScreen;
5
- //# sourceMappingURL=CreateManagedAccountScreen.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreateManagedAccountScreen.d.ts","sourceRoot":"","sources":["../../../../../src/ui/screens/CreateManagedAccountScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAkB3D,QAAA,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA4NzD,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActingAsBanner.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/ActingAsBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;;AAgIvC,wBAA0C"}
@@ -1,5 +0,0 @@
1
- import type React from 'react';
2
- import type { BaseScreenProps } from '../types/navigation';
3
- declare const CreateManagedAccountScreen: React.FC<BaseScreenProps>;
4
- export default CreateManagedAccountScreen;
5
- //# sourceMappingURL=CreateManagedAccountScreen.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreateManagedAccountScreen.d.ts","sourceRoot":"","sources":["../../../../../src/ui/screens/CreateManagedAccountScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAkB3D,QAAA,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA4NzD,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -1,129 +0,0 @@
1
- import React, { useMemo } from 'react';
2
- import {
3
- View,
4
- Text,
5
- TouchableOpacity,
6
- StyleSheet,
7
- Platform,
8
- Image,
9
- } from 'react-native';
10
- import { useTheme } from '@oxyhq/bloom/theme';
11
- import { useOxy } from '../context/OxyContext';
12
- import { getAccountDisplayName } from '@oxyhq/core';
13
-
14
- /**
15
- * ActingAsBanner - Shows a subtle banner when the user is acting as a managed account.
16
- *
17
- * - Tap to open the ManageAccount screen (account switcher lives in AccountMenu).
18
- * - Long-press to switch back to the primary account immediately.
19
- *
20
- * Place this component in your app's layout where you want the banner to appear
21
- * (typically at the top of the screen or below the header).
22
- */
23
- const ActingAsBanner: React.FC = () => {
24
- const bloomTheme = useTheme();
25
- const { actingAs, managedAccounts, setActingAs, showBottomSheet, oxyServices } = useOxy();
26
-
27
- const activeAccount = useMemo(() => {
28
- if (!actingAs || !managedAccounts.length) return null;
29
- const managed = managedAccounts.find((m) => m.accountId === actingAs);
30
- return managed?.account ?? null;
31
- }, [actingAs, managedAccounts]);
32
-
33
- if (!actingAs || !activeAccount) {
34
- return null;
35
- }
36
-
37
- const displayName = getAccountDisplayName(activeAccount);
38
-
39
- const handlePress = () => {
40
- showBottomSheet?.('ManageAccount');
41
- };
42
-
43
- const handleLongPress = () => {
44
- setActingAs(null);
45
- };
46
-
47
- return (
48
- <TouchableOpacity
49
- style={[styles.container, { backgroundColor: bloomTheme.colors.primary + '14' }]}
50
- onPress={handlePress}
51
- onLongPress={handleLongPress}
52
- activeOpacity={0.7}
53
- accessibilityRole="button"
54
- accessibilityLabel={`Acting as ${displayName}. Tap to switch accounts, long press to switch back.`}
55
- >
56
- <View style={styles.content}>
57
- {activeAccount.avatar ? (
58
- <Image
59
- source={{ uri: oxyServices.getFileDownloadUrl(activeAccount.avatar, 'thumb') }}
60
- style={styles.avatar}
61
- />
62
- ) : (
63
- <View style={[styles.avatarFallback, { backgroundColor: bloomTheme.colors.primary + '30' }]}>
64
- <Text style={[styles.avatarText, { color: bloomTheme.colors.primary }]}>
65
- {displayName.charAt(0).toUpperCase()}
66
- </Text>
67
- </View>
68
- )}
69
- <View style={styles.textContainer}>
70
- <Text style={[styles.label, { color: bloomTheme.colors.primary }]} numberOfLines={1}>
71
- Acting as {displayName}
72
- </Text>
73
- </View>
74
- <View style={[styles.switchBackHint, { borderColor: bloomTheme.colors.primary + '40' }]}>
75
- <Text style={[styles.switchBackText, { color: bloomTheme.colors.primary }]}>
76
- Switch back
77
- </Text>
78
- </View>
79
- </View>
80
- </TouchableOpacity>
81
- );
82
- };
83
-
84
- const styles = StyleSheet.create({
85
- container: {
86
- paddingHorizontal: 16,
87
- paddingVertical: 10,
88
- },
89
- content: {
90
- flexDirection: 'row',
91
- alignItems: 'center',
92
- },
93
- avatar: {
94
- width: 24,
95
- height: 24,
96
- borderRadius: 12,
97
- },
98
- avatarFallback: {
99
- width: 24,
100
- height: 24,
101
- borderRadius: 12,
102
- alignItems: 'center',
103
- justifyContent: 'center',
104
- },
105
- avatarText: {
106
- fontSize: 12,
107
- fontWeight: Platform.OS === 'web' ? '600' : undefined,
108
- },
109
- textContainer: {
110
- flex: 1,
111
- marginLeft: 10,
112
- },
113
- label: {
114
- fontSize: 14,
115
- fontWeight: Platform.OS === 'web' ? '500' : undefined,
116
- },
117
- switchBackHint: {
118
- borderWidth: 1,
119
- borderRadius: 12,
120
- paddingHorizontal: 10,
121
- paddingVertical: 4,
122
- },
123
- switchBackText: {
124
- fontSize: 12,
125
- fontWeight: Platform.OS === 'web' ? '500' : undefined,
126
- },
127
- });
128
-
129
- export default React.memo(ActingAsBanner);