@oxyhq/services 12.2.0 → 13.0.1

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