@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
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _reactQuery = require("@tanstack/react-query");
10
+ var _bloom = require("@oxyhq/bloom");
11
+ var _theme = require("@oxyhq/bloom/theme");
12
+ var _typography = require("@oxyhq/bloom/typography");
13
+ var _button = require("@oxyhq/bloom/button");
14
+ var _textField = require("@oxyhq/bloom/text-field");
15
+ var _settingsList = require("@oxyhq/bloom/settings-list");
16
+ var _Header = _interopRequireDefault(require("../components/Header.js"));
17
+ var _SettingsIcon = require("../components/SettingsIcon.js");
18
+ var _OxyContext = require("../context/OxyContext.js");
19
+ var _useI18n = require("../hooks/useI18n.js");
20
+ var _jsxRuntime = require("react/jsx-runtime");
21
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
+ const DISPLAY_NAME_MAX = 50;
23
+ const BIO_MAX = 160;
24
+ const errorMessage = (error, fallback) => error instanceof Error && error.message ? error.message : fallback;
25
+
26
+ /**
27
+ * Per-account settings: edit the account's profile, jump to member management,
28
+ * and archive the account (danger zone). Receives the target `accountId` via
29
+ * navigation props. Self-surface for the caller's own personal account lives in
30
+ * {@link ManageAccountScreen}; this screen manages a non-personal account in the
31
+ * graph.
32
+ */
33
+ const AccountSettingsScreen = ({
34
+ onClose,
35
+ goBack,
36
+ navigate,
37
+ accountId
38
+ }) => {
39
+ const bloomTheme = (0, _theme.useTheme)();
40
+ const colors = bloomTheme.colors;
41
+ const {
42
+ t
43
+ } = (0, _useI18n.useI18n)();
44
+ const {
45
+ oxyServices,
46
+ canUsePrivateApi,
47
+ actingAs,
48
+ setActingAs
49
+ } = (0, _OxyContext.useOxy)();
50
+ const queryClient = (0, _reactQuery.useQueryClient)();
51
+ const id = typeof accountId === 'string' ? accountId : '';
52
+ const accountQuery = (0, _reactQuery.useQuery)({
53
+ queryKey: ['accounts', 'detail', id],
54
+ queryFn: () => oxyServices.getAccount(id),
55
+ enabled: canUsePrivateApi && id.length > 0
56
+ });
57
+ const node = accountQuery.data ?? null;
58
+ const permissions = node?.callerMembership?.permissions ?? [];
59
+ const isImplicitOwner = node ? node.relationship !== 'member' : false;
60
+ const can = (0, _react.useCallback)(permission => isImplicitOwner || permissions.includes(permission), [isImplicitOwner, permissions]);
61
+ const canUpdate = can('account:update');
62
+ const canViewMembers = can('members:read');
63
+ const canArchive = can('account:delete');
64
+
65
+ // Editable fields, seeded lazily from the loaded account once.
66
+ const [seeded, setSeeded] = (0, _react.useState)(false);
67
+ const [displayName, setDisplayName] = (0, _react.useState)('');
68
+ const [bio, setBio] = (0, _react.useState)('');
69
+
70
+ // Seed the form from the account during render (no useEffect): the first time
71
+ // the query resolves we capture its values into local edit state.
72
+ if (node && !seeded) {
73
+ const first = node.account?.name?.first ?? '';
74
+ const last = node.account?.name?.last ?? '';
75
+ setDisplayName([first, last].filter(Boolean).join(' '));
76
+ setBio(node.account?.bio ?? '');
77
+ setSeeded(true);
78
+ }
79
+ const updateMutation = (0, _reactQuery.useMutation)({
80
+ mutationKey: ['accounts', 'update', id],
81
+ mutationFn: input => oxyServices.updateAccount(id, input),
82
+ onSuccess: () => {
83
+ queryClient.invalidateQueries({
84
+ queryKey: ['accounts', 'detail', id]
85
+ });
86
+ queryClient.invalidateQueries({
87
+ queryKey: ['accounts']
88
+ });
89
+ _bloom.toast.success(t('accounts.settings.toasts.saved') || 'Account updated');
90
+ },
91
+ onError: error => {
92
+ _bloom.toast.error(errorMessage(error, t('accounts.settings.toasts.saveFailed') || 'Failed to update account'));
93
+ }
94
+ });
95
+ const archiveMutation = (0, _reactQuery.useMutation)({
96
+ mutationKey: ['accounts', 'archive', id],
97
+ mutationFn: () => oxyServices.archiveAccount(id),
98
+ onSuccess: () => {
99
+ // If this was the active account, drop back to the personal account.
100
+ if (actingAs === id) {
101
+ setActingAs(null);
102
+ }
103
+ queryClient.invalidateQueries({
104
+ queryKey: ['accounts']
105
+ });
106
+ _bloom.toast.success(t('accounts.settings.toasts.archived') || 'Account archived');
107
+ (onClose ?? goBack)?.();
108
+ },
109
+ onError: error => {
110
+ _bloom.toast.error(errorMessage(error, t('accounts.settings.toasts.archiveFailed') || 'Failed to archive account'));
111
+ }
112
+ });
113
+ const archiveDialog = (0, _bloom.useDialogControl)();
114
+ const handleSave = (0, _react.useCallback)(() => {
115
+ const trimmed = displayName.trim();
116
+ const nameParts = trimmed.split(/\s+/).filter(Boolean);
117
+ const first = nameParts[0] || '';
118
+ const last = nameParts.length > 1 ? nameParts.slice(1).join(' ') : undefined;
119
+ updateMutation.mutate({
120
+ name: {
121
+ first,
122
+ last
123
+ },
124
+ bio: bio.trim() ? bio.trim() : null
125
+ });
126
+ }, [displayName, bio, updateMutation]);
127
+ const title = t('accounts.settings.title') || 'Account settings';
128
+ const accountHandle = (0, _react.useMemo)(() => {
129
+ const username = node?.account?.username;
130
+ return username ? `@${username}` : '';
131
+ }, [node?.account?.username]);
132
+ if (!id) {
133
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
134
+ className: "flex-1 bg-bg",
135
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header.default, {
136
+ title: title,
137
+ onBack: goBack,
138
+ onClose: onClose,
139
+ showBackButton: true,
140
+ showCloseButton: true,
141
+ elevation: "subtle"
142
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
143
+ className: "flex-1 items-center justify-center px-screen-margin",
144
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
145
+ className: "text-body font-body text-text-secondary text-center",
146
+ children: t('accounts.settings.errors.missingAccount') || 'No account selected.'
147
+ })
148
+ })]
149
+ });
150
+ }
151
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
152
+ className: "flex-1 bg-bg",
153
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header.default, {
154
+ title: title,
155
+ onBack: goBack,
156
+ onClose: onClose,
157
+ showBackButton: true,
158
+ showCloseButton: true,
159
+ elevation: "subtle"
160
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.KeyboardAvoidingView, {
161
+ className: "flex-1",
162
+ behavior: _reactNative.Platform.OS === 'ios' ? 'padding' : undefined,
163
+ keyboardVerticalOffset: _reactNative.Platform.OS === 'ios' ? 88 : 0,
164
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
165
+ className: "flex-1",
166
+ contentContainerClassName: "px-screen-margin pt-space-24 pb-space-32 gap-space-24",
167
+ showsVerticalScrollIndicator: false,
168
+ keyboardShouldPersistTaps: "handled",
169
+ children: accountQuery.isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
170
+ className: "items-center py-space-32",
171
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
172
+ color: colors.primary
173
+ })
174
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
175
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
176
+ className: "gap-space-8",
177
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.H1, {
178
+ className: "text-headerBold font-headerBold text-text",
179
+ numberOfLines: 1,
180
+ children: accountHandle || title
181
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
182
+ className: "text-body font-body text-text-secondary",
183
+ children: t('accounts.settings.subtitle') || 'Manage this account’s profile, members, and access.'
184
+ })]
185
+ }), canUpdate ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
186
+ className: "gap-space-16 p-space-16 rounded-radius-20 bg-fill",
187
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_textField.TextField, {
188
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_textField.TextFieldInput, {
189
+ floatingLabel: true,
190
+ label: t('accounts.settings.displayName.label') || 'Display name',
191
+ value: displayName,
192
+ onChangeText: setDisplayName,
193
+ maxLength: DISPLAY_NAME_MAX
194
+ })
195
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
196
+ className: "gap-space-4",
197
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_textField.TextField, {
198
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_textField.TextFieldInput, {
199
+ floatingLabel: true,
200
+ label: t('accounts.settings.bio.label') || 'Bio (optional)',
201
+ value: bio,
202
+ onChangeText: setBio,
203
+ maxLength: BIO_MAX,
204
+ multiline: true,
205
+ numberOfLines: 3,
206
+ textAlignVertical: "top"
207
+ })
208
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_typography.Text, {
209
+ className: "text-caption font-caption text-text-tertiary px-space-4 text-right",
210
+ children: [bio.length, "/", BIO_MAX]
211
+ })]
212
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
213
+ variant: "primary",
214
+ onPress: handleSave,
215
+ disabled: updateMutation.isPending || !displayName.trim(),
216
+ loading: updateMutation.isPending,
217
+ accessibilityLabel: t('accounts.settings.save') || 'Save changes',
218
+ className: "w-full",
219
+ children: t('accounts.settings.save') || 'Save changes'
220
+ })]
221
+ }) : null, canViewMembers ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_settingsList.SettingsListGroup, {
222
+ title: t('accounts.settings.sections.access') || 'Access',
223
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_settingsList.SettingsListItem, {
224
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SettingsIcon.SettingsIcon, {
225
+ name: "account-multiple",
226
+ color: colors.info
227
+ }),
228
+ title: t('accounts.members.title') || 'Members',
229
+ description: t('accounts.settings.members.subtitle') || 'Invite people and manage roles',
230
+ onPress: () => navigate?.('AccountMembers', {
231
+ accountId: id
232
+ })
233
+ })
234
+ }) : null, canArchive ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_settingsList.SettingsListGroup, {
235
+ title: t('accounts.settings.sections.dangerZone') || 'Danger zone',
236
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_settingsList.SettingsListItem, {
237
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SettingsIcon.SettingsIcon, {
238
+ name: "archive-arrow-down",
239
+ color: colors.error
240
+ }),
241
+ title: t('accounts.settings.archive.title') || 'Archive account',
242
+ description: t('accounts.settings.archive.subtitle') || 'Deactivate this account',
243
+ onPress: () => archiveDialog.open()
244
+ })
245
+ }) : null]
246
+ })
247
+ })
248
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_bloom.Dialog, {
249
+ control: archiveDialog,
250
+ title: t('accounts.settings.archive.confirmTitle') || 'Archive account',
251
+ description: t('accounts.settings.archive.confirmDescription') || 'Archive this account? It will be deactivated and its members will lose access.',
252
+ actions: [{
253
+ label: t('accounts.settings.archive.title') || 'Archive account',
254
+ color: 'destructive',
255
+ onPress: () => archiveMutation.mutate()
256
+ }, {
257
+ label: t('common.cancel') || 'Cancel',
258
+ color: 'cancel'
259
+ }]
260
+ })]
261
+ });
262
+ };
263
+ var _default = exports.default = AccountSettingsScreen;
264
+ //# sourceMappingURL=AccountSettingsScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_reactQuery","_bloom","_theme","_typography","_button","_textField","_settingsList","_Header","_interopRequireDefault","_SettingsIcon","_OxyContext","_useI18n","_jsxRuntime","e","__esModule","default","DISPLAY_NAME_MAX","BIO_MAX","errorMessage","error","fallback","Error","message","AccountSettingsScreen","onClose","goBack","navigate","accountId","bloomTheme","useTheme","colors","t","useI18n","oxyServices","canUsePrivateApi","actingAs","setActingAs","useOxy","queryClient","useQueryClient","id","accountQuery","useQuery","queryKey","queryFn","getAccount","enabled","length","node","data","permissions","callerMembership","isImplicitOwner","relationship","can","useCallback","permission","includes","canUpdate","canViewMembers","canArchive","seeded","setSeeded","useState","displayName","setDisplayName","bio","setBio","first","account","name","last","filter","Boolean","join","updateMutation","useMutation","mutationKey","mutationFn","input","updateAccount","onSuccess","invalidateQueries","toast","success","onError","archiveMutation","archiveAccount","archiveDialog","useDialogControl","handleSave","trimmed","trim","nameParts","split","slice","undefined","mutate","title","accountHandle","useMemo","username","jsxs","View","className","children","jsx","onBack","showBackButton","showCloseButton","elevation","Text","KeyboardAvoidingView","behavior","Platform","OS","keyboardVerticalOffset","ScrollView","contentContainerClassName","showsVerticalScrollIndicator","keyboardShouldPersistTaps","isLoading","ActivityIndicator","color","primary","Fragment","H1","numberOfLines","TextField","TextFieldInput","floatingLabel","label","value","onChangeText","maxLength","multiline","textAlignVertical","Button","variant","onPress","disabled","isPending","loading","accessibilityLabel","SettingsListGroup","SettingsListItem","icon","SettingsIcon","info","description","open","Dialog","control","actions","_default","exports"],"sourceRoot":"../../../../src","sources":["ui/screens/AccountSettingsScreen.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _Header = _interopRequireDefault(require("../components/Header.js"));
10
+ var _AccountSwitcher = require("../components/AccountSwitcher.js");
11
+ var _useI18n = require("../hooks/useI18n.js");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ /**
15
+ * Bottom-sheet route wrapper around {@link AccountSwitcherView}. Used when the
16
+ * switcher is opened as a sheet (e.g. from the `ActiveAccountBanner` cue or the
17
+ * "Your accounts" entry in ManageAccount) rather than as the header-chip
18
+ * popover (which uses the `AccountSwitcher` modal directly).
19
+ */const AccountSwitcherScreen = ({
20
+ onClose,
21
+ goBack,
22
+ navigate
23
+ }) => {
24
+ const {
25
+ t
26
+ } = (0, _useI18n.useI18n)();
27
+ const close = (0, _react.useCallback)(() => {
28
+ (onClose ?? goBack)?.();
29
+ }, [onClose, goBack]);
30
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
31
+ className: "flex-1 bg-bg",
32
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header.default, {
33
+ title: t('accountSwitcher.title') || 'Switch account',
34
+ onBack: goBack,
35
+ onClose: onClose,
36
+ showBackButton: !!goBack,
37
+ showCloseButton: !!onClose,
38
+ elevation: "subtle"
39
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_AccountSwitcher.AccountSwitcherView, {
40
+ onClose: close,
41
+ onAddAccount: () => navigate?.('OxyAuth'),
42
+ onNavigateManage: () => navigate?.('ManageAccount'),
43
+ onCreateAccount: () => navigate?.('CreateAccount'),
44
+ onOpenAccountSettings: accountId => navigate?.('AccountSettings', {
45
+ accountId
46
+ })
47
+ })]
48
+ });
49
+ };
50
+ var _default = exports.default = AccountSwitcherScreen;
51
+ //# sourceMappingURL=AccountSwitcherScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_Header","_interopRequireDefault","_AccountSwitcher","_useI18n","_jsxRuntime","e","__esModule","default","AccountSwitcherScreen","onClose","goBack","navigate","t","useI18n","close","useCallback","jsxs","View","className","children","jsx","title","onBack","showBackButton","showCloseButton","elevation","AccountSwitcherView","onAddAccount","onNavigateManage","onCreateAccount","onOpenAccountSettings","accountId","_default","exports"],"sourceRoot":"../../../../src","sources":["ui/screens/AccountSwitcherScreen.tsx"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAA2C,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAG,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE3C;AACA;AACA;AACA;AACA;AACA,GACA,MAAMG,qBAAgD,GAAGA,CAAC;EAAEC,OAAO;EAAEC,MAAM;EAAEC;AAAS,CAAC,KAAK;EAC1F,MAAM;IAAEC;EAAE,CAAC,GAAG,IAAAC,gBAAO,EAAC,CAAC;EAEvB,MAAMC,KAAK,GAAG,IAAAC,kBAAW,EAAC,MAAM;IAC9B,CAACN,OAAO,IAAIC,MAAM,IAAI,CAAC;EACzB,CAAC,EAAE,CAACD,OAAO,EAAEC,MAAM,CAAC,CAAC;EAErB,oBACE,IAAAN,WAAA,CAAAY,IAAA,EAACjB,YAAA,CAAAkB,IAAI;IAACC,SAAS,EAAC,cAAc;IAAAC,QAAA,gBAC5B,IAAAf,WAAA,CAAAgB,GAAA,EAACpB,OAAA,CAAAO,OAAM;MACLc,KAAK,EAAET,CAAC,CAAC,uBAAuB,CAAC,IAAI,gBAAiB;MACtDU,MAAM,EAAEZ,MAAO;MACfD,OAAO,EAAEA,OAAQ;MACjBc,cAAc,EAAE,CAAC,CAACb,MAAO;MACzBc,eAAe,EAAE,CAAC,CAACf,OAAQ;MAC3BgB,SAAS,EAAC;IAAQ,CACnB,CAAC,eACF,IAAArB,WAAA,CAAAgB,GAAA,EAAClB,gBAAA,CAAAwB,mBAAmB;MAClBjB,OAAO,EAAEK,KAAM;MACfa,YAAY,EAAEA,CAAA,KAAMhB,QAAQ,GAAG,SAAS,CAAE;MAC1CiB,gBAAgB,EAAEA,CAAA,KAAMjB,QAAQ,GAAG,eAAe,CAAE;MACpDkB,eAAe,EAAEA,CAAA,KAAMlB,QAAQ,GAAG,eAAe,CAAE;MACnDmB,qBAAqB,EAAGC,SAAS,IAAKpB,QAAQ,GAAG,iBAAiB,EAAE;QAAEoB;MAAU,CAAC;IAAE,CACpF,CAAC;EAAA,CACE,CAAC;AAEX,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAA1B,OAAA,GAEaC,qBAAqB","ignoreList":[]}
@@ -17,24 +17,68 @@ var _OxyContext = require("../context/OxyContext.js");
17
17
  var _bloom = require("@oxyhq/bloom");
18
18
  var _jsxRuntime = require("react/jsx-runtime");
19
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
+ /** Kind of account this screen can create. `personal` is a signup-minted root and is never created here. */
21
+
20
22
  const USERNAME_REGEX = /^[a-zA-Z0-9_-]{3,30}$/;
21
23
  const DEBOUNCE_MS = 400;
22
24
  const USERNAME_MAX = 30;
23
25
  const DISPLAY_NAME_MAX = 50;
24
26
  const BIO_MAX = 160;
25
- const CreateManagedAccountScreen = ({
27
+ // The creatable account kinds, matching the API `createAccountSchema` enum.
28
+ // Order places the most common choice (a project / persona) first.
29
+ const KIND_OPTIONS = [{
30
+ value: 'project',
31
+ icon: 'cube-outline'
32
+ }, {
33
+ value: 'organization',
34
+ icon: 'business-outline'
35
+ }, {
36
+ value: 'bot',
37
+ icon: 'hardware-chip-outline'
38
+ }];
39
+ const kindLabel = (t, kind) => {
40
+ switch (kind) {
41
+ case 'organization':
42
+ return t('accounts.kinds.organization.label') || 'Organization';
43
+ case 'bot':
44
+ return t('accounts.kinds.bot.label') || 'Bot';
45
+ default:
46
+ return t('accounts.kinds.project.label') || 'Project';
47
+ }
48
+ };
49
+ const kindDescription = (t, kind) => {
50
+ switch (kind) {
51
+ case 'organization':
52
+ return t('accounts.kinds.organization.description') || 'A shared team account with members';
53
+ case 'bot':
54
+ return t('accounts.kinds.bot.description') || 'A programmatic account with service credentials';
55
+ default:
56
+ return t('accounts.kinds.project.description') || 'A separate account you control';
57
+ }
58
+ };
59
+
60
+ /**
61
+ * Create a new account in the unified account graph (an organization, project,
62
+ * or bot). The caller becomes its owner. Optionally nested under a parent
63
+ * account via the `parentAccountId` prop. NOT the cryptographic Commons/DID
64
+ * "identity" — that is a separate concept.
65
+ */
66
+ const CreateAccountScreen = ({
26
67
  onClose,
27
- goBack
68
+ goBack,
69
+ parentAccountId
28
70
  }) => {
29
71
  const bloomTheme = (0, _theme.useTheme)();
30
72
  const {
31
73
  oxyServices,
32
- createManagedAccount,
74
+ createAccount,
33
75
  setActingAs
34
76
  } = (0, _OxyContext.useOxy)();
35
77
  const {
36
78
  t
37
79
  } = (0, _useI18n.useI18n)();
80
+ const parentId = typeof parentAccountId === 'string' ? parentAccountId : undefined;
81
+ const [kind, setKind] = (0, _react.useState)('project');
38
82
  const [username, setUsername] = (0, _react.useState)('');
39
83
  const [displayName, setDisplayName] = (0, _react.useState)('');
40
84
  const [bio, setBio] = (0, _react.useState)('');
@@ -50,12 +94,12 @@ const CreateManagedAccountScreen = ({
50
94
  }
51
95
  if (!value || value.length < 3) {
52
96
  setUsernameStatus(value.length > 0 ? 'invalid' : 'idle');
53
- setUsernameMessage(value.length > 0 ? 'Username must be at least 3 characters' : '');
97
+ setUsernameMessage(value.length > 0 ? t('accounts.create.username.tooShort') || 'Username must be at least 3 characters' : '');
54
98
  return;
55
99
  }
56
100
  if (!USERNAME_REGEX.test(value)) {
57
101
  setUsernameStatus('invalid');
58
- setUsernameMessage('Only letters, numbers, hyphens, and underscores');
102
+ setUsernameMessage(t('accounts.create.username.invalidChars') || 'Only letters, numbers, hyphens, and underscores');
59
103
  return;
60
104
  }
61
105
  setUsernameStatus('checking');
@@ -64,13 +108,13 @@ const CreateManagedAccountScreen = ({
64
108
  try {
65
109
  const result = await oxyServices.checkUsernameAvailability(value);
66
110
  setUsernameStatus(result.available ? 'available' : 'taken');
67
- setUsernameMessage(result.message || (result.available ? 'Username is available' : 'Username is taken'));
111
+ setUsernameMessage(result.message || (result.available ? t('accounts.create.username.available') || 'Username is available' : t('accounts.create.username.taken') || 'Username is taken'));
68
112
  } catch {
69
113
  setUsernameStatus('idle');
70
- setUsernameMessage('Could not check availability');
114
+ setUsernameMessage(t('accounts.create.username.checkFailed') || 'Could not check availability');
71
115
  }
72
116
  }, DEBOUNCE_MS);
73
- }, [oxyServices]);
117
+ }, [oxyServices, t]);
74
118
  const handleUsernameChange = (0, _react.useCallback)(value => {
75
119
  const cleaned = value.toLowerCase().replace(/[^a-z0-9_-]/g, '');
76
120
  setUsername(cleaned);
@@ -94,36 +138,42 @@ const CreateManagedAccountScreen = ({
94
138
  const nameParts = displayName.trim().split(/\s+/);
95
139
  const firstName = nameParts[0] || '';
96
140
  const lastName = nameParts.length > 1 ? nameParts.slice(1).join(' ') : undefined;
97
- const account = await createManagedAccount({
141
+ const input = {
142
+ kind,
98
143
  username,
99
144
  name: {
100
145
  first: firstName,
101
146
  last: lastName
102
147
  },
103
- bio: bio.trim() || undefined
104
- });
105
- _bloom.toast.success('Identity created successfully');
148
+ bio: bio.trim() || undefined,
149
+ ...(parentId ? {
150
+ parentAccountId: parentId
151
+ } : null)
152
+ };
153
+ const account = await createAccount(input);
154
+ _bloom.toast.success(t('accounts.create.toasts.success') || 'Account created');
106
155
 
107
- // Switch to the new managed account
156
+ // Switch to the new account
108
157
  if (account.accountId) {
109
158
  setActingAs(account.accountId);
110
159
  }
111
160
  onClose?.();
112
161
  } catch (error) {
113
- const message = error instanceof Error ? error.message : 'Failed to create identity';
162
+ const message = error instanceof Error ? error.message : t('accounts.create.toasts.failed') || 'Failed to create account';
114
163
  _bloom.toast.error(message);
115
164
  } finally {
116
165
  setIsCreating(false);
117
166
  }
118
- }, [canCreate, username, displayName, bio, createManagedAccount, setActingAs, onClose]);
167
+ }, [canCreate, kind, username, displayName, bio, parentId, createAccount, setActingAs, onClose, t]);
119
168
 
120
169
  // Status icon + color shown alongside the username field message
121
170
  const usernameIsInvalid = usernameStatus === 'taken' || usernameStatus === 'invalid';
122
171
  const statusColor = usernameStatus === 'available' ? bloomTheme.colors.success : usernameIsInvalid ? bloomTheme.colors.negative : bloomTheme.colors.textSecondary;
172
+ const title = t('accounts.create.title') || 'Create account';
123
173
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
124
174
  className: "flex-1 bg-bg",
125
175
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header.default, {
126
- title: "Create Identity",
176
+ title: title,
127
177
  onBack: goBack,
128
178
  onClose: onClose,
129
179
  showBackButton: true,
@@ -142,11 +192,52 @@ const CreateManagedAccountScreen = ({
142
192
  className: "gap-space-8",
143
193
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.H1, {
144
194
  className: "text-headerBold font-headerBold text-text",
145
- children: "Create Identity"
195
+ children: title
146
196
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
147
197
  className: "text-body font-body text-text-secondary",
148
- children: "Create a managed identity that you control. It will have its own profile, posts, and interactions."
198
+ children: t('accounts.create.subtitle') || 'Create an account you control. It will have its own profile, members, and apps.'
149
199
  })]
200
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
201
+ className: "gap-space-8",
202
+ children: KIND_OPTIONS.map(option => {
203
+ const selected = option.value === kind;
204
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
205
+ accessibilityRole: "radio",
206
+ accessibilityState: {
207
+ selected
208
+ },
209
+ accessibilityLabel: kindLabel(t, option.value),
210
+ onPress: () => setKind(option.value),
211
+ activeOpacity: 0.7,
212
+ className: "flex-row items-center gap-space-12 p-space-16 rounded-radius-20",
213
+ style: {
214
+ backgroundColor: selected ? bloomTheme.colors.primarySubtle : bloomTheme.colors.card,
215
+ borderWidth: 1,
216
+ borderColor: selected ? bloomTheme.colors.primary : bloomTheme.colors.border
217
+ },
218
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
219
+ name: option.icon,
220
+ size: 22,
221
+ color: selected ? bloomTheme.colors.primary : bloomTheme.colors.icon
222
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
223
+ className: "flex-1",
224
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
225
+ className: "text-body font-bodyBold",
226
+ style: {
227
+ color: selected ? bloomTheme.colors.primary : bloomTheme.colors.text
228
+ },
229
+ children: kindLabel(t, option.value)
230
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
231
+ className: "text-caption font-caption text-text-secondary",
232
+ children: kindDescription(t, option.value)
233
+ })]
234
+ }), selected ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
235
+ name: "checkmark-circle",
236
+ size: 20,
237
+ color: bloomTheme.colors.primary
238
+ }) : null]
239
+ }, option.value);
240
+ })
150
241
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
151
242
  className: "gap-space-16 p-space-16 rounded-radius-20 bg-fill",
152
243
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
@@ -155,7 +246,7 @@ const CreateManagedAccountScreen = ({
155
246
  isInvalid: usernameIsInvalid,
156
247
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_textField.TextFieldInput, {
157
248
  floatingLabel: true,
158
- label: "Username",
249
+ label: t('accounts.create.username.label') || 'Username',
159
250
  value: username,
160
251
  onChangeText: handleUsernameChange,
161
252
  isInvalid: usernameIsInvalid,
@@ -188,7 +279,7 @@ const CreateManagedAccountScreen = ({
188
279
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_textField.TextField, {
189
280
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_textField.TextFieldInput, {
190
281
  floatingLabel: true,
191
- label: "Display Name",
282
+ label: t('accounts.create.displayName.label') || 'Display name',
192
283
  value: displayName,
193
284
  onChangeText: setDisplayName,
194
285
  maxLength: DISPLAY_NAME_MAX
@@ -198,7 +289,7 @@ const CreateManagedAccountScreen = ({
198
289
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_textField.TextField, {
199
290
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_textField.TextFieldInput, {
200
291
  floatingLabel: true,
201
- label: "Bio (optional)",
292
+ label: t('accounts.create.bio.label') || 'Bio (optional)',
202
293
  value: bio,
203
294
  onChangeText: setBio,
204
295
  maxLength: BIO_MAX,
@@ -216,13 +307,13 @@ const CreateManagedAccountScreen = ({
216
307
  onPress: handleCreate,
217
308
  disabled: !canCreate,
218
309
  loading: isCreating,
219
- accessibilityLabel: "Create Identity",
310
+ accessibilityLabel: title,
220
311
  className: "w-full",
221
- children: "Create Identity"
312
+ children: title
222
313
  })]
223
314
  })
224
315
  })]
225
316
  });
226
317
  };
227
- var _default = exports.default = CreateManagedAccountScreen;
228
- //# sourceMappingURL=CreateManagedAccountScreen.js.map
318
+ var _default = exports.default = CreateAccountScreen;
319
+ //# sourceMappingURL=CreateAccountScreen.js.map
@@ -0,0 +1 @@
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","KIND_OPTIONS","value","icon","kindLabel","t","kind","kindDescription","CreateAccountScreen","onClose","goBack","parentAccountId","bloomTheme","useTheme","oxyServices","createAccount","setActingAs","useOxy","useI18n","parentId","undefined","setKind","useState","username","setUsername","displayName","setDisplayName","bio","setBio","usernameStatus","setUsernameStatus","usernameMessage","setUsernameMessage","isCreating","setIsCreating","debounceTimerRef","useRef","checkUsername","useCallback","current","clearTimeout","length","test","setTimeout","result","checkUsernameAvailability","available","message","handleUsernameChange","cleaned","toLowerCase","replace","useEffect","canCreate","trim","handleCreate","nameParts","split","firstName","lastName","slice","join","input","name","first","last","account","toast","success","accountId","error","Error","usernameIsInvalid","statusColor","colors","negative","textSecondary","title","jsxs","View","className","children","jsx","onBack","showBackButton","showCloseButton","elevation","KeyboardAvoidingView","behavior","Platform","OS","keyboardVerticalOffset","ScrollView","contentContainerClassName","showsVerticalScrollIndicator","keyboardShouldPersistTaps","H1","Text","map","option","selected","TouchableOpacity","accessibilityRole","accessibilityState","accessibilityLabel","onPress","activeOpacity","style","backgroundColor","primarySubtle","card","borderWidth","borderColor","primary","border","Ionicons","size","color","text","TextField","isInvalid","TextFieldInput","floatingLabel","label","onChangeText","autoCapitalize","autoCorrect","autoComplete","maxLength","ActivityIndicator","multiline","numberOfLines","textAlignVertical","Button","variant","disabled","loading","_default","exports"],"sourceRoot":"../../../../src","sources":["ui/screens/CreateAccountScreen.tsx"],"mappings":"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","ignoreList":[]}