@arbidocs/blocks 0.4.129 → 0.4.131

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 (121) hide show
  1. package/dist/agents/index.cjs +303 -303
  2. package/dist/agents/index.js +11 -11
  3. package/dist/calendar/CalendarPrint.d.ts +25 -0
  4. package/dist/calendar/booking-slots.d.ts +21 -0
  5. package/dist/calendar/index.cjs +381 -97
  6. package/dist/calendar/index.cjs.map +1 -1
  7. package/dist/calendar/index.d.ts +4 -0
  8. package/dist/calendar/index.js +277 -3
  9. package/dist/calendar/index.js.map +1 -1
  10. package/dist/calendar/print-layout.d.ts +16 -0
  11. package/dist/calendar/printCalendar.d.ts +6 -0
  12. package/dist/calls/composite-canvas.d.ts +52 -0
  13. package/dist/calls/index.cjs +374 -1
  14. package/dist/calls/index.cjs.map +1 -1
  15. package/dist/calls/index.d.ts +3 -0
  16. package/dist/calls/index.js +359 -4
  17. package/dist/calls/index.js.map +1 -1
  18. package/dist/calls/ringtone.d.ts +16 -0
  19. package/dist/calls/voice-levels.d.ts +32 -0
  20. package/dist/chat/ThreadVisualizer.d.ts +28 -0
  21. package/dist/chat/index.cjs +151 -135
  22. package/dist/chat/index.d.ts +2 -0
  23. package/dist/chat/index.js +4 -4
  24. package/dist/chat/thread-diagram.d.ts +26 -0
  25. package/dist/{chunk-H2KQ6OSU.js → chunk-26E6PHD2.js} +231 -6
  26. package/dist/chunk-26E6PHD2.js.map +1 -0
  27. package/dist/{chunk-2PNNCEPH.js → chunk-54ANPPMV.js} +4 -4
  28. package/dist/{chunk-2PNNCEPH.js.map → chunk-54ANPPMV.js.map} +1 -1
  29. package/dist/{chunk-IBZJYCYM.js → chunk-66TA5IBN.js} +17 -25
  30. package/dist/chunk-66TA5IBN.js.map +1 -0
  31. package/dist/{chunk-OYMWV45N.js → chunk-7D4W3SAH.js} +51 -4
  32. package/dist/chunk-7D4W3SAH.js.map +1 -0
  33. package/dist/{chunk-2DFDFOM7.js → chunk-7HAM7Y5U.js} +3 -3
  34. package/dist/{chunk-2DFDFOM7.js.map → chunk-7HAM7Y5U.js.map} +1 -1
  35. package/dist/{chunk-7423V6RM.cjs → chunk-7KH4M3KY.cjs} +8 -8
  36. package/dist/{chunk-7423V6RM.cjs.map → chunk-7KH4M3KY.cjs.map} +1 -1
  37. package/dist/{chunk-TGWTLNXW.cjs → chunk-BIXHB4LV.cjs} +3 -2
  38. package/dist/{chunk-TGWTLNXW.cjs.map → chunk-BIXHB4LV.cjs.map} +1 -1
  39. package/dist/{chunk-DZYAAL4H.cjs → chunk-BZF55UCE.cjs} +234 -5
  40. package/dist/chunk-BZF55UCE.cjs.map +1 -0
  41. package/dist/{chunk-3BJLNKOB.cjs → chunk-CDZVC32G.cjs} +5 -5
  42. package/dist/{chunk-3BJLNKOB.cjs.map → chunk-CDZVC32G.cjs.map} +1 -1
  43. package/dist/{chunk-PUCY3UXN.js → chunk-CXLVI3SB.js} +3 -3
  44. package/dist/{chunk-PUCY3UXN.js.map → chunk-CXLVI3SB.js.map} +1 -1
  45. package/dist/{chunk-KYDRUFWT.cjs → chunk-D4YR56FV.cjs} +5 -5
  46. package/dist/{chunk-KYDRUFWT.cjs.map → chunk-D4YR56FV.cjs.map} +1 -1
  47. package/dist/{chunk-6BTCDKCK.js → chunk-DI35D756.js} +4 -4
  48. package/dist/{chunk-6BTCDKCK.js.map → chunk-DI35D756.js.map} +1 -1
  49. package/dist/{chunk-TGJNPKST.js → chunk-GTCC2VAR.js} +3 -3
  50. package/dist/{chunk-TGJNPKST.js.map → chunk-GTCC2VAR.js.map} +1 -1
  51. package/dist/{chunk-6AALMYPS.cjs → chunk-HM23LXUP.cjs} +3 -3
  52. package/dist/{chunk-6AALMYPS.cjs.map → chunk-HM23LXUP.cjs.map} +1 -1
  53. package/dist/{chunk-HSFLEVZY.js → chunk-KLOSOT26.js} +10 -10
  54. package/dist/{chunk-HSFLEVZY.js.map → chunk-KLOSOT26.js.map} +1 -1
  55. package/dist/{chunk-SARREDFP.cjs → chunk-LC2KJSUS.cjs} +46 -46
  56. package/dist/{chunk-SARREDFP.cjs.map → chunk-LC2KJSUS.cjs.map} +1 -1
  57. package/dist/{chunk-MUMH3Z6K.cjs → chunk-LRD7BHAT.cjs} +50 -3
  58. package/dist/chunk-LRD7BHAT.cjs.map +1 -0
  59. package/dist/{chunk-CJBN5HIS.js → chunk-P5HOXWYL.js} +3 -3
  60. package/dist/{chunk-CJBN5HIS.js.map → chunk-P5HOXWYL.js.map} +1 -1
  61. package/dist/{chunk-5Y7JRY7Y.js → chunk-P5ST47VY.js} +3 -3
  62. package/dist/{chunk-5Y7JRY7Y.js.map → chunk-P5ST47VY.js.map} +1 -1
  63. package/dist/{chunk-A7NCSZAP.cjs → chunk-QZTNTP75.cjs} +17 -25
  64. package/dist/chunk-QZTNTP75.cjs.map +1 -0
  65. package/dist/{chunk-ENDP7JER.js → chunk-VW2C2AZL.js} +3 -3
  66. package/dist/{chunk-ENDP7JER.js.map → chunk-VW2C2AZL.js.map} +1 -1
  67. package/dist/{chunk-JLTXVW25.cjs → chunk-W27VK32R.cjs} +78 -78
  68. package/dist/{chunk-JLTXVW25.cjs.map → chunk-W27VK32R.cjs.map} +1 -1
  69. package/dist/{chunk-PJJY6CYL.cjs → chunk-WV4IDVDQ.cjs} +11 -11
  70. package/dist/{chunk-PJJY6CYL.cjs.map → chunk-WV4IDVDQ.cjs.map} +1 -1
  71. package/dist/{chunk-NYHGG2IA.cjs → chunk-ZV3BKLFY.cjs} +3 -3
  72. package/dist/{chunk-NYHGG2IA.cjs.map → chunk-ZV3BKLFY.cjs.map} +1 -1
  73. package/dist/collaboration/index.cjs +9 -9
  74. package/dist/collaboration/index.js +1 -1
  75. package/dist/connect/docx.cjs +4 -4
  76. package/dist/connect/docx.js +3 -3
  77. package/dist/connect/index.cjs +183 -146
  78. package/dist/connect/index.cjs.map +1 -1
  79. package/dist/connect/index.d.ts +1 -1
  80. package/dist/connect/index.js +134 -98
  81. package/dist/connect/index.js.map +1 -1
  82. package/dist/connection/ConnectedSettings.d.ts +42 -7
  83. package/dist/document-tools/index.cjs +1 -1
  84. package/dist/document-tools/index.js +1 -1
  85. package/dist/facts/fact-citations.d.ts +56 -0
  86. package/dist/facts/fact-table-column-resize.d.ts +18 -0
  87. package/dist/facts/index.cjs +194 -8
  88. package/dist/facts/index.cjs.map +1 -1
  89. package/dist/facts/index.d.ts +2 -0
  90. package/dist/facts/index.js +180 -5
  91. package/dist/facts/index.js.map +1 -1
  92. package/dist/files/index.cjs +1 -1
  93. package/dist/files/index.js +1 -1
  94. package/dist/home/index.cjs +17 -17
  95. package/dist/home/index.js +3 -3
  96. package/dist/index.cjs +517 -501
  97. package/dist/index.js +18 -18
  98. package/dist/settings/MoreInfo.d.ts +25 -0
  99. package/dist/settings/PlanCard.d.ts +1 -1
  100. package/dist/settings/index.cjs +79 -225
  101. package/dist/settings/index.cjs.map +1 -1
  102. package/dist/settings/index.d.ts +1 -1
  103. package/dist/settings/index.js +70 -215
  104. package/dist/settings/index.js.map +1 -1
  105. package/dist/shell/index.cjs +1 -1
  106. package/dist/shell/index.js +1 -1
  107. package/dist/site/index.cjs +5 -5
  108. package/dist/site/index.js +1 -1
  109. package/dist/studio/index.cjs +8 -8
  110. package/dist/studio/index.js +6 -6
  111. package/dist/workflow-canvas/index.cjs +64 -64
  112. package/dist/workflow-canvas/index.js +12 -12
  113. package/node_modules/@arbidocs/coedit/package.json +1 -1
  114. package/package.json +9 -4
  115. package/dist/chunk-A7NCSZAP.cjs.map +0 -1
  116. package/dist/chunk-DZYAAL4H.cjs.map +0 -1
  117. package/dist/chunk-H2KQ6OSU.js.map +0 -1
  118. package/dist/chunk-IBZJYCYM.js.map +0 -1
  119. package/dist/chunk-MUMH3Z6K.cjs.map +0 -1
  120. package/dist/chunk-OYMWV45N.js.map +0 -1
  121. package/dist/settings/FirmPool.d.ts +0 -82
@@ -15,7 +15,7 @@ export { ConnectedWorkflowRunner, DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, type
15
15
  export { WorkflowRunThread, type WorkflowRunThreadProps } from '../connection/WorkflowRunThread';
16
16
  export { ConnectedTagTable, type ConnectedTagTableProps } from '../connection/ConnectedTagTable';
17
17
  export { useConnectedShellWorkspaces, type UseConnectedShellWorkspacesOptions, } from '../connection/useConnectedShellWorkspaces';
18
- export { ConnectedProfileCard, ConnectedSecuritySection, ConnectedNotificationPreferences, ConnectedSessionsRow, ConnectedLogoutDialog, ConnectedDangerZone, ConnectedIdentityVerification, ConnectedRequireVerified, defaultUnmetPasswordRequirement, type SettingsNotify, type ConnectedProfileCardProps, type ConnectedSecuritySectionProps, type ConnectedNotificationPreferencesProps, type ConnectedSessionsRowProps, type ConnectedLogoutDialogProps, type ConnectedDangerZoneProps, type ConnectedIdentityVerificationProps, type ConnectedRequireVerifiedProps, } from '../connection/ConnectedSettings';
18
+ export { ConnectedProfileCard, ConnectedSecuritySection, ConnectedPasswordChangeDialog, ConnectedNotificationPreferences, ConnectedSessionsRow, ConnectedLogoutDialog, ConnectedDangerZone, ConnectedIdentityVerification, ConnectedRequireVerified, defaultUnmetPasswordRequirement, type SettingsNotify, type ConnectedProfileCardProps, type ConnectedSecuritySectionProps, type ConnectedPasswordChangeDialogProps, type ConnectedNotificationPreferencesProps, type ConnectedSessionsRowProps, type ConnectedLogoutDialogProps, type ConnectedDangerZoneProps, type ConnectedIdentityVerificationProps, type ConnectedRequireVerifiedProps, } from '../connection/ConnectedSettings';
19
19
  export { useConnectedDocxNotifications } from '../connection/useConnectedDocxNotifications';
20
20
  export { useConnectedWorkNotifications, type WorkNotificationTarget, } from '../connection/useConnectedWorkNotifications';
21
21
  export * from '../connection/mail';
@@ -1,36 +1,36 @@
1
1
  "use client";
2
- import { FilesFilterBar, FolderFilterButton, FolderPickerRow } from '../chunk-7RJTEWYM.js';
3
- import { SettingsSection, ProfileCard, AvatarPicker, IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, SettingsCard, SettingsActionRow, PasswordChangeDialog, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, SettingsRow, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, SettingsDangerZone, DeleteAccountDialog, toDeleteBlockerViews } from '../chunk-GFYGYME3.js';
4
- import { useWorkspaceDocs } from '../chunk-6BTCDKCK.js';
5
- export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-6BTCDKCK.js';
6
- import { ConnectedNativeDocxEditor } from '../chunk-CJBN5HIS.js';
7
- import { ConnectionProvider, useConnection } from '../chunk-OYMWV45N.js';
8
- export { ConnectionProvider, SESSION_EXPIRED_MESSAGE, isAuthenticated, useConnection } from '../chunk-OYMWV45N.js';
2
+ import { SettingsSection, ProfileCard, AvatarPicker, IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, PasswordChangeDialog, SettingsCard, SettingsActionRow, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, SettingsRow, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, SettingsDangerZone, DeleteAccountDialog, toDeleteBlockerViews } from '../chunk-GFYGYME3.js';
3
+ import { useWorkspaceDocs } from '../chunk-DI35D756.js';
4
+ export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-DI35D756.js';
5
+ import { ConnectedNativeDocxEditor } from '../chunk-P5HOXWYL.js';
6
+ import { ConnectionProvider, useConnection } from '../chunk-7D4W3SAH.js';
7
+ export { ConnectionProvider, SESSION_EXPIRED_MESSAGE, isAuthenticated, useConnection } from '../chunk-7D4W3SAH.js';
9
8
  import { SignDocumentDialog } from '../chunk-2YOVK524.js';
10
9
  import '../chunk-GYAUJ4KT.js';
11
10
  import '../chunk-2FL7QJKJ.js';
12
11
  import '../chunk-HFZ45FD3.js';
13
- import { WorkspaceActivityList, WorkspaceNotificationMenu, ThreadFollowMenuItem, ThreadFollowButton, TagTable, tagTableDocx } from '../chunk-ENDP7JER.js';
12
+ import { FilesFilterBar, FolderFilterButton, FolderPickerRow } from '../chunk-7RJTEWYM.js';
13
+ import { WorkspaceActivityList, WorkspaceNotificationMenu, ThreadFollowMenuItem, ThreadFollowButton, TagTable, tagTableDocx } from '../chunk-VW2C2AZL.js';
14
14
  import { PlainMailBodyEditor, draftMailCompose, replyMailCompose, emptyMailCompose, MailGrid, MailMessageView, MailDocumentPicker, parseMailRecipients } from '../chunk-6HCJ3ZEU.js';
15
15
  import { DOCX_MIME_TYPE } from '../chunk-QXMR5YHC.js';
16
16
  import '../chunk-AF6RDAJF.js';
17
- import { WorkflowStepBar, WorkflowRunner, fromPlanSteps, toPlanSteps, useWorkflowView } from '../chunk-2PNNCEPH.js';
18
- import '../chunk-EVUEIBNU.js';
17
+ import { WorkflowStepBar, WorkflowRunner, fromPlanSteps, toPlanSteps, useWorkflowView } from '../chunk-54ANPPMV.js';
18
+ import '../chunk-XD2M6LIG.js';
19
19
  import { TriStateFilterMenu } from '../chunk-6S5FLMWG.js';
20
+ import '../chunk-EVUEIBNU.js';
20
21
  import { FilterInput } from '../chunk-YU2KUMGE.js';
21
22
  import '../chunk-N5YEF3LC.js';
22
- import '../chunk-XD2M6LIG.js';
23
23
  import { StreamedArtifactFrame } from '../chunk-LOJVUGBJ.js';
24
24
  import '../chunk-VILAPTCB.js';
25
25
  import { ConfirmDialog } from '../chunk-ECERC6TI.js';
26
- import { ModalScaffold } from '../chunk-TX2ZICS7.js';
27
26
  import { TabHeader } from '../chunk-4WWM3GQ5.js';
28
- import { ChatPage } from '../chunk-PUCY3UXN.js';
27
+ import { ModalScaffold } from '../chunk-TX2ZICS7.js';
28
+ import { ChatPage } from '../chunk-CXLVI3SB.js';
29
29
  import '../chunk-7XF5SFJ2.js';
30
30
  import { takeOpenDocumentForTurn, useRegisterOpenDocument } from '../chunk-GYCQ3FNL.js';
31
- import { splitDocRef, stepLevels, stepDocuments, stepKindOf, initialRunInputs, workflowSteps, stepStatesFromActivity, runThreadTitle, stepFields } from '../chunk-2DFDFOM7.js';
32
- import '../chunk-AUS3KBHJ.js';
31
+ import { splitDocRef, stepLevels, stepDocuments, stepKindOf, initialRunInputs, workflowSteps, stepStatesFromActivity, runThreadTitle, stepFields } from '../chunk-7HAM7Y5U.js';
33
32
  import '../chunk-AA3PT6KR.js';
33
+ import '../chunk-AUS3KBHJ.js';
34
34
  import '../chunk-SLSBJRWW.js';
35
35
  import '../chunk-NPLYHR2E.js';
36
36
  import '../chunk-7F6CBP3Z.js';
@@ -38,12 +38,12 @@ import { initials } from '../chunk-OXF2IFXG.js';
38
38
  import '../chunk-VUNV25KB.js';
39
39
  import { lazy, useState, useMemo, Suspense, useEffect, useRef, useCallback, useLayoutEffect } from 'react';
40
40
  import { QueryClient, QueryClientProvider, useQueryClient, useQuery } from '@tanstack/react-query';
41
- import { ArbiProvider, useConversations, useRunConversation, useWorkspaceActivity, useWorkspaceUsers, useWorkspaceNotificationLevel, useFollowThread, useUploadSkillFiles, ArtifactCanvas, useArbiChat, useArbi, useDocuments, useTagKindSchema, useTags, useSetTagValues, useUpdateTagKindSchema, useInvalidateTagData, useWorkspaces, useShellWorkspaces, useProfile, useUpdateProfile, useRequestEmailChange, useConfirmEmailChange, useNameEditor, useAvatarCrop, useEmailChange, ImageCropModal, useIdentityVerification, usePasswordChange, usePasswordChangeForm, useNotificationPreferences, useSessions, useCurrentSessionId, useTerminateSession, useLogoutAllSessions, useDeleteAccount, useDeleteAccountFlow, useArbiWebSocket, notify, useWorkNotifications, mailDraftIdFromContent, useMailClient, defaultMailAlias, useClaimNativeAlias, useMailOnline, useConnectMailAccount, useDisconnectMailAccount, useMailPolicy, useMailAccounts, useMailUnlock, useMailFolders, useMailMessages, useMailDraftCompose, useMailMessage, useMailCache, MailOfflineUnavailableError, accountPath, useAgentSession, useStartAgentSession, useCloseAgentSession, isAliasTakenError, nextAliasSuggestion, aliasTakenMessage, mailJson, ArbiWebSocketProvider, useCreateWork, useActOnStep, useConversationActivity, useConversationThreads, fileAttachment, useMailProjects, useSaveMailDraft, useSendMail, useMailDraftReplaced, AiAnswer, useMailDraftEditor } from '@arbidocs/react';
41
+ import { ArbiProvider, useConversations, useRunConversation, useWorkspaceActivity, useWorkspaceUsers, useWorkspaceNotificationLevel, useFollowThread, useUploadSkillFiles, ArtifactCanvas, useArbiChat, useArbi, useDocuments, useTagKindSchema, useTags, useSetTagValues, useUpdateTagKindSchema, useInvalidateTagData, useWorkspaces, useShellWorkspaces, useProfile, useUpdateProfile, useRequestEmailChange, useConfirmEmailChange, useNameEditor, useAvatarCrop, useEmailChange, ImageCropModal, useIdentityVerification, usePasswordChange, usePasswordChangeForm, useNotificationPreferences, useSessions, useCurrentSessionId, useTerminateSession, useSignOut, useDeleteAccount, useDeleteAccountFlow, useArbiWebSocket, notify, useWorkNotifications, mailDraftIdFromContent, useMailClient, defaultMailAlias, useClaimNativeAlias, useMailOnline, useConnectMailAccount, useDisconnectMailAccount, useMailPolicy, useMailAccounts, useMailUnlock, useMailFolders, useMailMessages, useMailDraftCompose, useMailMessage, useMailCache, MailOfflineUnavailableError, accountPath, useAgentSession, useStartAgentSession, useCloseAgentSession, isAliasTakenError, nextAliasSuggestion, aliasTakenMessage, mailJson, ArbiWebSocketProvider, useCreateWork, useActOnStep, useConversationActivity, useConversationThreads, fileAttachment, useMailProjects, useSaveMailDraft, useSendMail, useMailDraftReplaced, AiAnswer, useMailDraftEditor } from '@arbidocs/react';
42
42
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
43
43
  import { Button, Label, Input, Dialog, DialogContent, DialogTitle, DialogDescription, Tooltip, TooltipTrigger, TooltipContent, cn } from '@arbidocs/react/ui';
44
44
  import { useStreamedArtifact } from '@arbidocs/react/artifacts';
45
45
  import { ExternalLink, UserCircle, KeyRound, Radio, Mail, Settings, Plus, ArrowLeft, Loader2, X, Paperclip, Send, MessageSquare } from 'lucide-react';
46
- import { useOptionalDocumentTools, fetchDocumentPdf, DocumentToolsProvider } from '@arbidocs/react/document-tools';
46
+ import { useIsOnline, useOptionalDocumentTools, fetchDocumentPdf, DocumentToolsProvider } from '@arbidocs/react/document-tools';
47
47
  import { useNotify } from '@arbidocs/react/shell';
48
48
  import { bytesToBase64 } from '@arbidocs/client';
49
49
  import { createPortal } from 'react-dom';
@@ -1320,12 +1320,16 @@ var AVATAR_PROBLEMS = {
1320
1320
  "too-large": "Image must be 5 MB or smaller",
1321
1321
  unreadable: "Couldn't read that image \u2014 try a different file"
1322
1322
  };
1323
- function ConnectedProfileCard({ notify: notify3, title = "Profile" }) {
1323
+ function ConnectedProfileCard({
1324
+ notify: notify3,
1325
+ title = "Profile",
1326
+ avatarClassName = "bg-primary text-primary-foreground",
1327
+ children
1328
+ }) {
1324
1329
  const { data: profile } = useProfile();
1325
1330
  const updateProfile = useUpdateProfile();
1326
1331
  const requestEmailChange = useRequestEmailChange();
1327
1332
  const confirmEmailChange = useConfirmEmailChange();
1328
- const { user } = useConnection();
1329
1333
  const name = useNameEditor({
1330
1334
  givenName: profile?.givenName,
1331
1335
  familyName: profile?.familyName,
@@ -1371,61 +1375,68 @@ function ConnectedProfileCard({ notify: notify3, title = "Profile" }) {
1371
1375
  }
1372
1376
  }
1373
1377
  });
1374
- const display = profile?.fullName || user?.name || "Unnamed";
1375
- return /* @__PURE__ */ jsx(SettingsSection, { icon: /* @__PURE__ */ jsx(UserCircle, {}), title, children: /* @__PURE__ */ jsx(
1376
- ProfileCard,
1377
- {
1378
- avatar: /* @__PURE__ */ jsxs(Fragment, { children: [
1379
- /* @__PURE__ */ jsx(
1380
- AvatarPicker,
1381
- {
1382
- pictureUrl: profile?.picture ?? user?.picture,
1383
- initials: initials(display),
1384
- fallbackClassName: "bg-primary text-primary-foreground",
1385
- isUploading: avatar.isUploading,
1386
- onFileChosen: avatar.onFileChosen
1387
- }
1388
- ),
1389
- /* @__PURE__ */ jsx(
1390
- ImageCropModal,
1391
- {
1392
- open: avatar.pendingImage !== null,
1393
- image: avatar.pendingImage,
1394
- title: "Crop your photo",
1395
- aspect: 1,
1396
- cropShape: "round",
1397
- output: { maxSize: 128, mimeType: "image/jpeg", quality: 0.85 },
1398
- onComplete: avatar.onCropComplete,
1399
- onCancel: avatar.onCropCancel
1400
- }
1401
- )
1402
- ] }),
1403
- name: { ...name, display, isSaving: name.isSaving },
1404
- email: profile?.email ?? user?.email ?? "",
1405
- isSso: profile?.isSso ?? false,
1406
- isVerified: profile?.isIdentityVerified ?? false,
1407
- onStartEmailChange: email.onStart,
1408
- emailChange: email.isOpen ? email : void 0
1409
- }
1410
- ) });
1378
+ const display = profile?.fullName || "Unnamed";
1379
+ return /* @__PURE__ */ jsxs(SettingsSection, { icon: /* @__PURE__ */ jsx(UserCircle, {}), title, children: [
1380
+ /* @__PURE__ */ jsx(
1381
+ ProfileCard,
1382
+ {
1383
+ avatar: /* @__PURE__ */ jsxs(Fragment, { children: [
1384
+ /* @__PURE__ */ jsx(
1385
+ AvatarPicker,
1386
+ {
1387
+ pictureUrl: profile?.picture,
1388
+ initials: initials(display),
1389
+ fallbackClassName: avatarClassName,
1390
+ isUploading: avatar.isUploading,
1391
+ onFileChosen: avatar.onFileChosen
1392
+ }
1393
+ ),
1394
+ /* @__PURE__ */ jsx(
1395
+ ImageCropModal,
1396
+ {
1397
+ open: avatar.pendingImage !== null,
1398
+ image: avatar.pendingImage,
1399
+ title: "Crop your photo",
1400
+ aspect: 1,
1401
+ cropShape: "round",
1402
+ output: { maxSize: 128, mimeType: "image/jpeg", quality: 0.85 },
1403
+ onComplete: avatar.onCropComplete,
1404
+ onCancel: avatar.onCropCancel
1405
+ }
1406
+ )
1407
+ ] }),
1408
+ name: { ...name, display, isSaving: name.isSaving },
1409
+ email: profile?.email ?? "",
1410
+ isSso: profile?.isSso ?? false,
1411
+ isVerified: profile?.isIdentityVerified ?? false,
1412
+ onStartEmailChange: email.onStart,
1413
+ emailChange: email.isOpen ? email : void 0
1414
+ }
1415
+ ),
1416
+ children
1417
+ ] });
1411
1418
  }
1412
1419
  function ConnectedIdentityVerification({
1413
1420
  notify: notify3,
1414
- labels
1421
+ labels,
1422
+ onManageBilling,
1423
+ formatPrice
1415
1424
  }) {
1416
1425
  const { data: profile } = useProfile();
1417
1426
  const flow = useIdentityVerification({
1427
+ formatPrice,
1418
1428
  onVerifiedChange: (verified) => notify3?.(verified ? "Identity verified" : "Verified tick removed", "success"),
1419
1429
  onNameAccepted: () => notify3?.("Name updated to match your ID", "success")
1420
1430
  });
1421
1431
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1422
- /* @__PURE__ */ jsx(IdentityVerificationCard, { flow, labels }),
1432
+ /* @__PURE__ */ jsx(IdentityVerificationCard, { flow, labels, onManageBilling }),
1423
1433
  /* @__PURE__ */ jsx(
1424
1434
  IdentityVerificationDialog,
1425
1435
  {
1426
1436
  flow,
1427
1437
  accountName: profile?.fullName ?? "",
1428
- labels
1438
+ labels,
1439
+ onManageBilling
1429
1440
  }
1430
1441
  )
1431
1442
  ] });
@@ -1443,21 +1454,56 @@ function defaultUnmetPasswordRequirement(password) {
1443
1454
  if (!/[0-9]/.test(password)) return "At least one number";
1444
1455
  return null;
1445
1456
  }
1446
- function ConnectedSecuritySection({
1457
+ function ConnectedPasswordChangeDialog({
1458
+ open,
1459
+ onClose,
1447
1460
  notify: notify3,
1448
1461
  getUnmetRequirement = defaultUnmetPasswordRequirement,
1449
- children
1462
+ recoveryMode = false,
1463
+ onRecoveryComplete
1450
1464
  }) {
1451
- const [open, setOpen] = useState(false);
1452
1465
  const change = usePasswordChange();
1453
1466
  const form = usePasswordChangeForm({
1467
+ recoveryMode,
1454
1468
  getUnmetRequirement,
1455
1469
  submit: async (vars) => {
1456
1470
  await change.mutateAsync(vars);
1457
- notify3?.("Password changed successfully", "success");
1471
+ notify3?.(
1472
+ recoveryMode ? "Account recovered and password set successfully" : "Password changed successfully",
1473
+ "success"
1474
+ );
1458
1475
  },
1459
- onClose: () => setOpen(false)
1476
+ onClose,
1477
+ onRecoveryComplete
1460
1478
  });
1479
+ return /* @__PURE__ */ jsx(
1480
+ PasswordChangeDialog,
1481
+ {
1482
+ open,
1483
+ onClose: form.onCancel,
1484
+ recoveryMode,
1485
+ currentPassword: form.currentPassword,
1486
+ onCurrentPasswordChange: form.onCurrentPasswordChange,
1487
+ newPassword: form.newPassword,
1488
+ onNewPasswordChange: form.onNewPasswordChange,
1489
+ confirmPassword: form.confirmPassword,
1490
+ onConfirmPasswordChange: form.onConfirmPasswordChange,
1491
+ getUnmetRequirement,
1492
+ error: form.error,
1493
+ isProcessing: form.isProcessing,
1494
+ isSubmitDisabled: form.isSubmitDisabled,
1495
+ onSubmit: form.onSubmit,
1496
+ isChanged: form.isChanged,
1497
+ onDone: form.onDone
1498
+ }
1499
+ );
1500
+ }
1501
+ function ConnectedSecuritySection({
1502
+ notify: notify3,
1503
+ getUnmetRequirement,
1504
+ children
1505
+ }) {
1506
+ const [open, setOpen] = useState(false);
1461
1507
  return /* @__PURE__ */ jsxs(SettingsSection, { icon: /* @__PURE__ */ jsx(KeyRound, {}), title: "Security", children: [
1462
1508
  /* @__PURE__ */ jsxs(SettingsCard, { padding: "sm", children: [
1463
1509
  /* @__PURE__ */ jsx(
@@ -1472,24 +1518,12 @@ function ConnectedSecuritySection({
1472
1518
  children
1473
1519
  ] }),
1474
1520
  /* @__PURE__ */ jsx(
1475
- PasswordChangeDialog,
1521
+ ConnectedPasswordChangeDialog,
1476
1522
  {
1477
1523
  open,
1478
- onClose: form.onCancel,
1479
- recoveryMode: false,
1480
- currentPassword: form.currentPassword,
1481
- onCurrentPasswordChange: form.onCurrentPasswordChange,
1482
- newPassword: form.newPassword,
1483
- onNewPasswordChange: form.onNewPasswordChange,
1484
- confirmPassword: form.confirmPassword,
1485
- onConfirmPasswordChange: form.onConfirmPasswordChange,
1486
- getUnmetRequirement,
1487
- error: form.error,
1488
- isProcessing: form.isProcessing,
1489
- isSubmitDisabled: form.isSubmitDisabled,
1490
- onSubmit: form.onSubmit,
1491
- isChanged: form.isChanged,
1492
- onDone: form.onDone
1524
+ onClose: () => setOpen(false),
1525
+ notify: notify3,
1526
+ getUnmetRequirement
1493
1527
  }
1494
1528
  )
1495
1529
  ] });
@@ -1582,26 +1616,26 @@ function ConnectedSessionsRow({
1582
1616
  function ConnectedLogoutDialog({
1583
1617
  open,
1584
1618
  onClose,
1585
- isOnline = true,
1619
+ canLogoutAll = true,
1620
+ confirmSignOut,
1586
1621
  renderSessionIcon
1587
1622
  }) {
1588
- const { logout } = useConnection();
1589
1623
  const sessions = useSessions({ enabled: open });
1590
- const logoutAll = useLogoutAllSessions();
1624
+ const signOut = useSignOut();
1625
+ const isOnline = useIsOnline();
1626
+ const run = async (everywhere) => {
1627
+ onClose();
1628
+ if (confirmSignOut && !await confirmSignOut()) return;
1629
+ signOut.mutate({ everywhere, reason: "manual" });
1630
+ };
1591
1631
  return /* @__PURE__ */ jsx(
1592
1632
  LogoutDialog,
1593
1633
  {
1594
1634
  open,
1595
1635
  onClose,
1596
- onLogoutThis: () => {
1597
- onClose();
1598
- logout();
1599
- },
1600
- onLogoutAll: () => {
1601
- onClose();
1602
- void logoutAll.mutateAsync().finally(logout);
1603
- },
1604
- canLogoutAll: true,
1636
+ onLogoutThis: () => void run(false),
1637
+ onLogoutAll: () => void run(true),
1638
+ canLogoutAll,
1605
1639
  isOnline,
1606
1640
  sessions: toLogoutSessionViews(sessions.data ?? []),
1607
1641
  renderSessionIcon
@@ -1611,13 +1645,15 @@ function ConnectedLogoutDialog({
1611
1645
  function ConnectedDangerZone({ notify: notify3, renderSubscriptionLink }) {
1612
1646
  const [zoneOpen, setZoneOpen] = useState(false);
1613
1647
  const [dialogOpen, setDialogOpen] = useState(false);
1614
- const { user, logout } = useConnection();
1648
+ const { data: profile } = useProfile();
1649
+ const userEmail = profile?.email ?? "";
1615
1650
  const remove = useDeleteAccount();
1651
+ const signOut = useSignOut();
1616
1652
  const flow = useDeleteAccountFlow({
1617
- userEmail: user?.email ?? "",
1653
+ userEmail,
1618
1654
  remove: () => remove.mutateAsync(),
1619
1655
  onClose: () => setDialogOpen(false),
1620
- onDeleted: logout,
1656
+ onDeleted: () => signOut.mutate({ reason: "account-deleted" }),
1621
1657
  onError: () => notify3?.("Failed to delete account. Please try again.", "error")
1622
1658
  });
1623
1659
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -1633,7 +1669,7 @@ function ConnectedDangerZone({ notify: notify3, renderSubscriptionLink }) {
1633
1669
  {
1634
1670
  variant: "destructive",
1635
1671
  size: "sm",
1636
- disabled: !user?.email,
1672
+ disabled: !userEmail,
1637
1673
  onClick: () => setDialogOpen(true),
1638
1674
  "data-testid": "delete-account-button",
1639
1675
  children: "Delete Account"
@@ -1650,7 +1686,7 @@ function ConnectedDangerZone({ notify: notify3, renderSubscriptionLink }) {
1650
1686
  blockers: toDeleteBlockerViews(flow.blockers, renderSubscriptionLink),
1651
1687
  onContinue: flow.onContinue,
1652
1688
  onBack: flow.onBack,
1653
- userEmail: user?.email ?? "",
1689
+ userEmail,
1654
1690
  confirmEmail: flow.confirmEmail,
1655
1691
  onConfirmEmailChange: flow.onConfirmEmailChange,
1656
1692
  isDeleting: flow.isDeleting,
@@ -3782,6 +3818,6 @@ function ConnectedAgentChatPanel({
3782
3818
  ] });
3783
3819
  }
3784
3820
 
3785
- export { ArbiAppProvider, ConnectedAgentChatPanel, ConnectedDangerZone, ConnectedIdentityVerification, ConnectedLogoutDialog, ConnectedMailAccounts, ConnectedMailComposer, ConnectedMailMessage, ConnectedMailSetup, ConnectedMailbox, ConnectedNotificationPreferences, ConnectedProfileCard, ConnectedRequireVerified, ConnectedSecuritySection, ConnectedSessionsRow, ConnectedSkillUpload, ConnectedTagTable, ConnectedTaskAccessRequest, ConnectedThreadFollow, ConnectedWorkflowRunner, ConnectedWorkspaceActivity, ConnectedWorkspaceNotificationMenu, DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, StreamedArtifact, WorkflowRunThread, defaultMailNotify, defaultUnmetPasswordRequirement, resolveMailbox, useConnectedDocxNotifications, useConnectedShellWorkspaces, useConnectedWorkNotifications };
3821
+ export { ArbiAppProvider, ConnectedAgentChatPanel, ConnectedDangerZone, ConnectedIdentityVerification, ConnectedLogoutDialog, ConnectedMailAccounts, ConnectedMailComposer, ConnectedMailMessage, ConnectedMailSetup, ConnectedMailbox, ConnectedNotificationPreferences, ConnectedPasswordChangeDialog, ConnectedProfileCard, ConnectedRequireVerified, ConnectedSecuritySection, ConnectedSessionsRow, ConnectedSkillUpload, ConnectedTagTable, ConnectedTaskAccessRequest, ConnectedThreadFollow, ConnectedWorkflowRunner, ConnectedWorkspaceActivity, ConnectedWorkspaceNotificationMenu, DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, StreamedArtifact, WorkflowRunThread, defaultMailNotify, defaultUnmetPasswordRequirement, resolveMailbox, useConnectedDocxNotifications, useConnectedShellWorkspaces, useConnectedWorkNotifications };
3786
3822
  //# sourceMappingURL=index.js.map
3787
3823
  //# sourceMappingURL=index.js.map