@arbidocs/blocks 0.5.22 → 0.5.24
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.
- package/dist/{WorkspaceTableView-6JVHGDUB.cjs → WorkspaceTableView-GIDGNGBW.cjs} +6 -6
- package/dist/{WorkspaceTableView-6JVHGDUB.cjs.map → WorkspaceTableView-GIDGNGBW.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-ECPHGWHF.js → WorkspaceTableView-S2PTTVHL.js} +4 -4
- package/dist/{WorkspaceTableView-ECPHGWHF.js.map → WorkspaceTableView-S2PTTVHL.js.map} +1 -1
- package/dist/auth/index.cjs +47 -47
- package/dist/auth/index.js +2 -2
- package/dist/{chunk-7DDMF3DZ.cjs → chunk-53T2FY4Z.cjs} +5 -31
- package/dist/chunk-53T2FY4Z.cjs.map +1 -0
- package/dist/chunk-5ZBXFHZW.js +434 -0
- package/dist/chunk-5ZBXFHZW.js.map +1 -0
- package/dist/{chunk-K237IYOD.cjs → chunk-BYJUI4AT.cjs} +54 -2
- package/dist/chunk-BYJUI4AT.cjs.map +1 -0
- package/dist/{chunk-O4EQYPLO.cjs → chunk-C2SZQKX2.cjs} +169 -27
- package/dist/chunk-C2SZQKX2.cjs.map +1 -0
- package/dist/{chunk-MSPNYW6Z.cjs → chunk-DTLVC6MN.cjs} +2 -53
- package/dist/chunk-DTLVC6MN.cjs.map +1 -0
- package/dist/{chunk-RVKVGS72.js → chunk-FDUQQNDT.js} +2 -2
- package/dist/{chunk-RVKVGS72.js.map → chunk-FDUQQNDT.js.map} +1 -1
- package/dist/{chunk-TTJGCJWX.cjs → chunk-H3XAHVDT.cjs} +42 -2
- package/dist/chunk-H3XAHVDT.cjs.map +1 -0
- package/dist/{chunk-XL55UDLO.js → chunk-IJJKUTKM.js} +5 -30
- package/dist/chunk-IJJKUTKM.js.map +1 -0
- package/dist/{chunk-ZX663X3X.cjs → chunk-KNRAKOCO.cjs} +6 -428
- package/dist/chunk-KNRAKOCO.cjs.map +1 -0
- package/dist/chunk-KUQOHPKP.cjs +443 -0
- package/dist/chunk-KUQOHPKP.cjs.map +1 -0
- package/dist/{chunk-F2BYURQZ.cjs → chunk-LYF47OXX.cjs} +5 -5
- package/dist/{chunk-F2BYURQZ.cjs.map → chunk-LYF47OXX.cjs.map} +1 -1
- package/dist/{chunk-PZRTRYPD.js → chunk-MKTEVOC3.js} +44 -5
- package/dist/chunk-MKTEVOC3.js.map +1 -0
- package/dist/{chunk-6XW3CMU4.js → chunk-N3KNAQ55.js} +144 -4
- package/dist/chunk-N3KNAQ55.js.map +1 -0
- package/dist/{chunk-KL6XOSEN.js → chunk-PLAGIVFF.js} +4 -52
- package/dist/chunk-PLAGIVFF.js.map +1 -0
- package/dist/{chunk-FZVAJFRH.cjs → chunk-RHKFCSFC.cjs} +2 -2
- package/dist/{chunk-FZVAJFRH.cjs.map → chunk-RHKFCSFC.cjs.map} +1 -1
- package/dist/{chunk-NVRJ6WTR.js → chunk-RTAYJUQM.js} +3 -3
- package/dist/{chunk-NVRJ6WTR.js.map → chunk-RTAYJUQM.js.map} +1 -1
- package/dist/{chunk-IXBJEQH5.js → chunk-VN4FSGBR.js} +53 -4
- package/dist/chunk-VN4FSGBR.js.map +1 -0
- package/dist/{chunk-SLRVI2YU.js → chunk-X6U6L6BG.js} +29 -4
- package/dist/chunk-X6U6L6BG.js.map +1 -0
- package/dist/{chunk-SQ5F5BFW.cjs → chunk-XDU3HHUU.cjs} +32 -6
- package/dist/chunk-XDU3HHUU.cjs.map +1 -0
- package/dist/{chunk-SKVVOEMX.js → chunk-XXUPUXBF.js} +8 -423
- package/dist/chunk-XXUPUXBF.js.map +1 -0
- package/dist/connect/index.cjs +1203 -624
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +770 -197
- package/dist/connect/index.js.map +1 -1
- package/dist/connection/auth/CompactLogin.d.ts +26 -0
- package/dist/connection/auth/ConnectedLoginPage.d.ts +9 -1
- package/dist/connection/auth/index.d.ts +3 -1
- package/dist/connection/auth/sso-popup.d.ts +13 -0
- package/dist/connection/auth/sso-sign-in.d.ts +38 -0
- package/dist/connection/auth/support.d.ts +17 -0
- package/dist/connection/auth/useLoginActions.d.ts +9 -2
- package/dist/connection/billing/ConnectedQuotaDialog.d.ts +5 -13
- package/dist/connection/billing/index.d.ts +1 -1
- package/dist/connection/connectors/ConnectedSharePointAdminConsentPage.d.ts +26 -0
- package/dist/connection/connectors/index.d.ts +1 -0
- package/dist/connection/projects/ConnectedProjectsPanel.d.ts +9 -1
- package/dist/connection/projects/ProjectsListPage.d.ts +40 -0
- package/dist/connection/projects/index.d.ts +1 -0
- package/dist/connection/settings-page/ConnectedAccountSettings.d.ts +2 -1
- package/dist/connection/settings-page/ConnectedBoxPortalSection.d.ts +6 -0
- package/dist/connection/settings-page/appearanceSection.d.ts +30 -0
- package/dist/connection/settings-page/index.d.ts +1 -0
- package/dist/index.cjs +209 -237
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +11 -50
- package/dist/index.js.map +1 -1
- package/dist/settings/AppearanceSettings.d.ts +1 -2
- package/dist/settings/index.cjs +153 -153
- package/dist/settings/index.d.ts +2 -1
- package/dist/settings/index.js +1 -1
- package/dist/site/index.cjs +82 -74
- package/dist/site/index.d.ts +2 -0
- package/dist/site/index.js +3 -3
- package/dist/studio/index.cjs +73 -73
- package/dist/studio/index.js +5 -5
- package/dist/theme/appearance.d.ts +47 -0
- package/dist/theme/fromCss.d.ts +33 -0
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/chunk-6XW3CMU4.js.map +0 -1
- package/dist/chunk-7DDMF3DZ.cjs.map +0 -1
- package/dist/chunk-AMTWY22T.js +0 -11
- package/dist/chunk-AMTWY22T.js.map +0 -1
- package/dist/chunk-IXBJEQH5.js.map +0 -1
- package/dist/chunk-K237IYOD.cjs.map +0 -1
- package/dist/chunk-KL6XOSEN.js.map +0 -1
- package/dist/chunk-MSPNYW6Z.cjs.map +0 -1
- package/dist/chunk-O4EQYPLO.cjs.map +0 -1
- package/dist/chunk-PZRTRYPD.js.map +0 -1
- package/dist/chunk-SKVVOEMX.js.map +0 -1
- package/dist/chunk-SLRVI2YU.js.map +0 -1
- package/dist/chunk-SQ5F5BFW.cjs.map +0 -1
- package/dist/chunk-TTJGCJWX.cjs.map +0 -1
- package/dist/chunk-XL55UDLO.js.map +0 -1
- package/dist/chunk-ZU2B2RZK.cjs +0 -13
- package/dist/chunk-ZU2B2RZK.cjs.map +0 -1
- package/dist/chunk-ZX663X3X.cjs.map +0 -1
package/dist/connect/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useBillingSupport, formatMoney, isProProject, useSelfExtId, addonCharge, formatPeriodEnd, quoteParts, taxDetail, money2, ANNUAL_PREMIUM_AI_NOTE, totalWithTaxWord, planBadgeView, DEFAULT_SPEND_CAP_PENCE, findProPrices, packPrice, calcSavingsPercent, parseBudgetPounds, isAddonBudgetZero, useRewardBalance, getQuotaItems, aiUsageResetTimestamp, formatResetDate, ZERO_BUDGET_MESSAGE, CAP_REACHED_MESSAGE, PRO_PACKS, planNameForPacks, proTierName, STORAGE_BLOCK_GB, ADDON_BLOCK_AI_GBP, quoteError, POSTCODE_COUNTRIES, addonPrice, checkoutBlockPriceText, quoteTotalLine, apiErrorDetail, checkoutItemsLabel, projectGroupBilling, SUGGESTED_DAILY_CAP_PER_USER, FREE_STORAGE_MB, FREE_AI_GBP, PRO_AI_GBP, PRO_STORAGE_GB, plusVat, planPreviewLines, PAY_TODAY_UNPRICED, TAX_LOCATION_INVALID, FREE_COLLABORATORS, MAX_CHECKOUT_BLOCKS, reduceBounds, splitBlocks, autoRoom, nextRemovedBlockSize, stepLabel, addStepCaption, blocksLabel, MIN_AUTO_TOPUP_THRESHOLD_GBP, USAGE_CAP_LABEL, USAGE_CAP_HELP, PLAN_CHOICE_PACKS, nextPeriodBody, addonSettingsBody, budgetSavedMessage } from '../chunk-
|
|
3
|
-
export { CAP_REACHED_MESSAGE, ZERO_BUDGET_MESSAGE, aiUsageResetTimestamp, formatMoney, formatResetDate, getQuotaItems, isAddonBudgetZero, isProProject, planBadgeView, planName, projectGroupBilling, useBillingSupport, useRewardBalance } from '../chunk-
|
|
2
|
+
import { useBillingSupport, formatMoney, isProProject, useSelfExtId, addonCharge, formatPeriodEnd, quoteParts, taxDetail, money2, ANNUAL_PREMIUM_AI_NOTE, totalWithTaxWord, planBadgeView, DEFAULT_SPEND_CAP_PENCE, findProPrices, packPrice, calcSavingsPercent, parseBudgetPounds, isAddonBudgetZero, useRewardBalance, getQuotaItems, aiUsageResetTimestamp, formatResetDate, ZERO_BUDGET_MESSAGE, CAP_REACHED_MESSAGE, PRO_PACKS, planNameForPacks, proTierName, STORAGE_BLOCK_GB, ADDON_BLOCK_AI_GBP, quoteError, POSTCODE_COUNTRIES, addonPrice, checkoutBlockPriceText, quoteTotalLine, apiErrorDetail, checkoutItemsLabel, projectGroupBilling, SUGGESTED_DAILY_CAP_PER_USER, FREE_STORAGE_MB, FREE_AI_GBP, PRO_AI_GBP, PRO_STORAGE_GB, plusVat, planPreviewLines, PAY_TODAY_UNPRICED, TAX_LOCATION_INVALID, FREE_COLLABORATORS, MAX_CHECKOUT_BLOCKS, reduceBounds, splitBlocks, autoRoom, nextRemovedBlockSize, stepLabel, addStepCaption, blocksLabel, MIN_AUTO_TOPUP_THRESHOLD_GBP, USAGE_CAP_LABEL, USAGE_CAP_HELP, PLAN_CHOICE_PACKS, nextPeriodBody, addonSettingsBody, budgetSavedMessage } from '../chunk-RTAYJUQM.js';
|
|
3
|
+
export { CAP_REACHED_MESSAGE, ZERO_BUDGET_MESSAGE, aiUsageResetTimestamp, formatMoney, formatResetDate, getQuotaItems, isAddonBudgetZero, isProProject, planBadgeView, planName, projectGroupBilling, useBillingSupport, useRewardBalance } from '../chunk-RTAYJUQM.js';
|
|
4
4
|
import { getRoleBadgeClass, formatRole, getRoleDescription, PageLoading, WorkspacePageFrame, WorkspaceIdentityPanel, WorkspaceProjectSlot, WorkspaceAudienceLine, CommonWorkspaceToggle, ExpandableSection, LeaveFooter, ProjectPicker, WorkspaceTypeBadge, WorkspaceList, WorkspaceGroup, WorkspaceCard } from '../chunk-X4Y7ZHFB.js';
|
|
5
5
|
import { isAgentAccount, workspaceConversationCount, workspaceDocumentCount, isListedWorkspace, WORKSPACE_CATEGORY_FILTERS, projectFilterId, workspaceFilterAttributes, groupWorkspacesByProject, workspaceGroupStats, byRecentUpdate } from '../chunk-BTF4AZMG.js';
|
|
6
6
|
import { SharedFileView, SharedFilesInbox } from '../chunk-4ML5AMMO.js';
|
|
@@ -8,13 +8,13 @@ import { buildFactCitations, citedVersionRef, chronologyFactBodies, docIdsOf, to
|
|
|
8
8
|
import { HomeLoadError, HomeFrame, HomeMain, HomeCenteredScroll, HomeCenteredColumn, DashboardRoot, DashboardBand, DashboardColumns, RecentList, DashboardAction, FactsStrip, FactMark, CreateTile } from '../chunk-IKTPM73F.js';
|
|
9
9
|
import { ProjectBandTitle, PlainBandTitle } from '../chunk-RQKWYKZY.js';
|
|
10
10
|
import '../chunk-WZ63HE2C.js';
|
|
11
|
-
import { MessageJsonTree, DraggableHeader, ProfileCard, AvatarPicker, IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, PasswordChangeDialog, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, DeleteAccountDialog, toDeleteBlockerViews, PremiumModelsFrame, ConnectionsLoading, ConnectionsError, ConnectionsEmpty, UsageToggle, SettingsPage, UsageSummary, UsageLineChart, SyncDialogBody, SyncField, SyncSelect, SyncSmallNote, SyncLoading, SyncReconnectNotice, SyncNote, SyncTreeFrame, SyncLinkRow, SyncLinkButton, SyncOptions, SyncOptionToggle, SyncDialogFooter, InvoicesDialog, PlanDialogFrame, ProjectList, RenameDialog, SharedProjectsSection, SharedProjectRow, MoreInfo, MoreInfoList, UsagePanel, UsageQuotaHint, UsageSection, UsageLegend, UsageProportionBar, UsageActionButton, ProjectDetailHeader, PlanBadge, ProjectDetailSection, PlanStack, PlanNotice, PlanPickerCard, PlanPickerHeader, PricingToggle, PromoCodeInput, PlanActionButton, QuotaExceededDialogView, InviteContactsDialog, WelcomeDialog, applyTriStateFilters, PanelFrame, PanelAddButton, PanelFrameBody, PanelScroll, PanelActionsRow, applyInvertedIndexFilter, ConfigSwitcherBar, PanelNote, ProjectRow, QuotaMeter, FilterChip, buildInvertedIndex, serverConnectionView, ServerConnectionButton, ModelProviderLabel, SyncFolderRow, SyncFolderStatus, PlanTierOption, PlanActionRow, SubscriptionStatusView, DailyCapField, PlanInfoPopover, PlanCardGrid, ReferralRewardSummary, CheckoutDialogFrame, ConnectionCard, ReferralRewardNote } from '../chunk-
|
|
11
|
+
import { MessageJsonTree, DraggableHeader, ProfileCard, AvatarPicker, IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, PasswordChangeDialog, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, DeleteAccountDialog, toDeleteBlockerViews, PremiumModelsFrame, ConnectionsLoading, ConnectionsError, ConnectionsEmpty, UsageToggle, SettingsPage, UsageSummary, AppearanceSettings, UsageLineChart, SyncDialogBody, SyncField, SyncSelect, SyncSmallNote, SyncLoading, SyncReconnectNotice, SyncNote, SyncTreeFrame, SyncLinkRow, SyncLinkButton, SyncOptions, SyncOptionToggle, SyncDialogFooter, InvoicesDialog, PlanDialogFrame, ProjectList, RenameDialog, SharedProjectsSection, SharedProjectRow, MoreInfo, MoreInfoList, UsagePanel, UsageQuotaHint, UsageSection, UsageLegend, UsageProportionBar, UsageActionButton, ProjectDetailHeader, PlanBadge, ProjectDetailSection, PlanStack, PlanNotice, PlanPickerCard, PlanPickerHeader, PricingToggle, PromoCodeInput, PlanActionButton, QuotaExceededDialogView, InviteContactsDialog, WelcomeDialog, applyTriStateFilters, PanelFrame, PanelAddButton, PanelFrameBody, PanelScroll, PanelActionsRow, applyInvertedIndexFilter, ConfigSwitcherBar, PanelNote, ProjectRow, QuotaMeter, FilterChip, buildInvertedIndex, serverConnectionView, ServerConnectionButton, ModelProviderLabel, SyncFolderRow, SyncFolderStatus, PlanTierOption, PlanActionRow, SubscriptionStatusView, DailyCapField, PlanInfoPopover, PlanCardGrid, ReferralRewardSummary, CheckoutDialogFrame, ConnectionCard, ReferralRewardNote } from '../chunk-FDUQQNDT.js';
|
|
12
12
|
export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-MUF3RFJZ.js';
|
|
13
13
|
import { useConnectedWorkspaceRole, useConnectedWorkflowScopeSource, ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedNativeDocxEditor, toWorkflowFieldDocument } from '../chunk-AAVFCPKD.js';
|
|
14
14
|
export { ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedWorkflowsTable, DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, toWorkflowFieldDocument, useConnectedAgentOptions, useConnectedWorkflowScopeSource, useConnectedWorkspaceRole, useDocxCommentTarget, useNativeDocxSupport } from '../chunk-AAVFCPKD.js';
|
|
15
15
|
import { ConnectedMarkdown, InternalDocLink, ExternalLink, DocumentWorkspaceContext } from '../chunk-M4FLTGFM.js';
|
|
16
16
|
export { ConnectedDocumentToolsProvider, ConnectedMarkdown, DocumentChip, DocumentWorkspaceContext, ExternalLink, InternalDocLink, MailChip, MermaidDiagram, WorkspaceDocumentReference, useDocumentViewerSupport, useDocumentWorkspace, useViewerDraftDocument, useViewerIsDetached, useViewerPassageCitation, useViewerStreamingDocument } from '../chunk-M4FLTGFM.js';
|
|
17
|
-
import { ExplorerFileTile, formatFolderSegment, hasFolderProviderIcon, FolderProviderIcon, ExplorerFolderTile, StatusPill, FailedStageIcon, DocumentNameCellFrame, DocumentRowMenu, visibilityToggleTooltip, FolderCell, FolderCommandList, RelatedDocsCell, FilterButton, DOCUMENTS_ROW_HEIGHT_INITIAL, searchExplorerDocuments, buildExplorerEntries, collectFolderDocs, joinFolderPath, getExplorerDisplayName, RECENTLY_DELETED_HINT, RECENTLY_DELETED_HINT_PLURAL, canDeleteDocument, ExplorerFrame, ExplorerStage, ExplorerScroller, ExplorerLoadingTiles, ExplorerEmpty, ExplorerMarquee, ExplorerDropOverlay, ExplorerDragPreview, CheckboxCell, TagColumnHeader, ExplorerFileTooltip, visibilityAudience, TagFormRoot, TagFormNameField, TagFormSelectField, TagFormNote, TagFormOptionsEditor, TagFormInstructionField, TagFormMeta, TagFormFooter, TagFormSharedToggle, FilesViewCenter, FilesFilterBar, TransferProgressView, TransferResumeBanner, ExportResultsReport, TransferScopeChooser, TransferKindsPicker, TransferReferencesChooser, ExportMethodChooser, ExportWorkspacePicker, TransferConflictChooser, TransferPlanSummary, ExportFooter, ExportModalTitle, ROW_MIN, rowHeightForLines, linesForRowHeight, RowDensityControl, FolderFilterButton, FolderPickerRow, UploadFrame, UploadContainer, SelectedFilesList, RejectedFilesList, UploadErrorMessage, UploadProgress,
|
|
17
|
+
import { ExplorerFileTile, formatFolderSegment, hasFolderProviderIcon, FolderProviderIcon, ExplorerFolderTile, StatusPill, FailedStageIcon, DocumentNameCellFrame, DocumentRowMenu, visibilityToggleTooltip, FolderCell, FolderCommandList, RelatedDocsCell, FilterButton, DOCUMENTS_ROW_HEIGHT_INITIAL, searchExplorerDocuments, buildExplorerEntries, collectFolderDocs, joinFolderPath, getExplorerDisplayName, RECENTLY_DELETED_HINT, RECENTLY_DELETED_HINT_PLURAL, canDeleteDocument, ExplorerFrame, ExplorerStage, ExplorerScroller, ExplorerLoadingTiles, ExplorerEmpty, ExplorerMarquee, ExplorerDropOverlay, ExplorerDragPreview, CheckboxCell, TagColumnHeader, ExplorerFileTooltip, visibilityAudience, TagFormRoot, TagFormNameField, TagFormSelectField, TagFormNote, TagFormOptionsEditor, TagFormInstructionField, TagFormMeta, TagFormFooter, TagFormSharedToggle, FilesViewCenter, FilesFilterBar, TransferProgressView, TransferResumeBanner, ExportResultsReport, TransferScopeChooser, TransferKindsPicker, TransferReferencesChooser, ExportMethodChooser, ExportWorkspacePicker, TransferConflictChooser, TransferPlanSummary, ExportFooter, ExportModalTitle, ROW_MIN, rowHeightForLines, linesForRowHeight, RowDensityControl, VendorLogo, FolderFilterButton, FolderPickerRow, UploadFrame, UploadContainer, SelectedFilesList, RejectedFilesList, UploadErrorMessage, UploadProgress, PrivacyExplainerModal, MultiSelectCellEditor, DOCUMENT_TYPE_OPTIONS, DEFAULT_DOCUMENT_COLUMNS, shareStateOf, BulkActionsBar, shareTooltipFor, parseFolderSegments, AiReviewDialogView, MoveToFolderDialog, sortFields, filterFieldsByName, fieldsApplyBarCopy, FieldsEditorRoot, FieldsEditorToolbar, FieldsEditorList, FieldRow, FieldsEmptyState, fieldsEmptyText, FieldsApplyBar, FieldsManagerDefinition, FieldsManagerBody, FieldsManagerTitle, BulkTagEditorDialog, BulkReplaceDialog, FieldValue, FieldFolderSelect, FieldFolderValue, FieldNativeSelect, FieldWithAttribution, EMAIL_VIEW_COLUMNS, useGridViews, ViewSelectorMenu, FilesAddMenu, applyColumnLayout, applyViewColumns, sortExplorerFiles, FilesPage, UrlInputDialog, FilesPageHeader, FilesToolbar, ExplorerFileNavigator, NavigatorPickerBar, FilesPageMain, DocumentGrid, resolveDocumentGridLayout, FilesModalFooter, BulkLabelSelectView, confirmHideFromMembers, DocumentsFolderButton, FilesTagsButton, UploadSourceSection, UploadSourcePicker, UploadBrowseButtons, canEditDocumentFields, FieldLabelsSelect, ShareToggle, FieldAttribution, UploadDropArea, canChangeVisibility, UploadUrlButton } from '../chunk-XVGUR746.js';
|
|
18
18
|
import { ViewToggle, DocumentViewToggle } from '../chunk-JJA6GQKH.js';
|
|
19
19
|
import { ModalBreadcrumbHeader, ModalCrumbs } from '../chunk-RC6VTY2H.js';
|
|
20
20
|
import { SignatureCertificate, SignDocumentDialog } from '../chunk-PQU6LE7U.js';
|
|
@@ -24,13 +24,13 @@ import '../chunk-MTSKK3BN.js';
|
|
|
24
24
|
import '../chunk-LU23I2HS.js';
|
|
25
25
|
import { FactSourcesPanel, FactPassageItem } from '../chunk-HFZ45FD3.js';
|
|
26
26
|
import '../chunk-IA5BYEO7.js';
|
|
27
|
-
import { EntityTooltip, EntityTooltipHeader, EntityTooltipSection, EntityTooltipHint, SharedCell, WorkspaceActivityList, WorkspaceNotificationMenu, ThreadFollowMenuItem, ThreadFollowButton, TagTable, TagPicker, tagsPageNouns, entitiesPhrase, ExtractEntitiesDialog, GridRowNavigator, LoadingIndicator, EntityIdentityBar, IDENTITY_NAME_MAX_LENGTH, EntityTooltipStats, tagTableDocx, documentCount, tagTableLabels, TagDetail, tagDetailLabels, tagNoteLabel, tagKindDescription, glossaryEntries, glossaryDocx, glossaryMarkdown, glossaryFileName } from '../chunk-
|
|
27
|
+
import { EntityTooltip, EntityTooltipHeader, EntityTooltipSection, EntityTooltipHint, SharedCell, WorkspaceActivityList, WorkspaceNotificationMenu, ThreadFollowMenuItem, ThreadFollowButton, TagTable, TagPicker, tagsPageNouns, entitiesPhrase, ExtractEntitiesDialog, GridRowNavigator, LoadingIndicator, EntityIdentityBar, IDENTITY_NAME_MAX_LENGTH, EntityTooltipStats, tagTableDocx, documentCount, tagTableLabels, TagDetail, tagDetailLabels, tagNoteLabel, tagKindDescription, Toolbar, glossaryEntries, glossaryDocx, glossaryMarkdown, glossaryFileName } from '../chunk-MKTEVOC3.js';
|
|
28
28
|
import { MemberAvatarStack } from '../chunk-FUPAGAZB.js';
|
|
29
29
|
import { renderSearchSnippet, SearchGroupHeader, isMeaningMatch, extractHighlightTerms, passesRelevanceCutoff, groupSearchResults, SearchPillToggle, SearchPagination, SearchPageFrame, SearchPageHeader, ApplyLabelDialog, SearchPageBody, SearchToolbarRow, SearchBar, SearchControlsBar, RelevanceThreshold, SearchTotalsHeadline, ApplyLabelButton, getSearchMatchHint, SearchResultsMain, SearchResultsInner, SearchErrorBanner, SearchResultList, SearchGroupCard, SearchNoResults, SearchEmptyState } from '../chunk-G4IYES7G.js';
|
|
30
30
|
import { SearchHit } from '../chunk-V5HVPQP7.js';
|
|
31
31
|
import { UsageMeter } from '../chunk-66TA5IBN.js';
|
|
32
|
-
import { DataTable } from '../chunk-
|
|
33
|
-
import '../chunk-
|
|
32
|
+
import { DataTable, PageHeader } from '../chunk-X6U6L6BG.js';
|
|
33
|
+
import { ThemeEditor } from '../chunk-5ZBXFHZW.js';
|
|
34
34
|
import { TimelineZoomControl } from '../chunk-4EZVCGRL.js';
|
|
35
35
|
import '../chunk-UJE32SST.js';
|
|
36
36
|
import '../chunk-NHZK64TQ.js';
|
|
@@ -44,7 +44,7 @@ import '../chunk-K4BGOPGG.js';
|
|
|
44
44
|
import '../chunk-ZCOVDK2E.js';
|
|
45
45
|
import { isDefinitionsLabel, DOCX_MIME_TYPE, toDefinitionSource, definitionLabels } from '../chunk-IYUKJESY.js';
|
|
46
46
|
import { decodeWhitespaceEntities } from '../chunk-AF6RDAJF.js';
|
|
47
|
-
import { EntityChip, StepTraceSummary, StepTrace, getCurrentAgentStepPresentation, AssistantEntity, ThreadActivity, SubAgentLane, getAgentStepPresentation, stepAccent, MODEL_TIER_ICON_MAP, StepRow, StepNarration, StepSummary, StepDetail, StepOutcome, StepParams, GoalCriteria, SubStepGroup, MODEL_TIER_LABELS, fromPlanSteps, latestMessageTime, isSupersededStop, compactThreadActivity, unnotifiedMentions, notifiedLabel, linkedRunsFromActivity, getModelIcon, SubagentRoster, buildLibrarySkills, filterLibrarySkills, SKILL_SOURCE_LABELS, SKILL_TYPE_LABELS, SkillViewToggle, SkillFilterChips, SkillTile, SkillGenerateForm, SkillLibraryDetail, parseSkillFrontmatter, SKILL_MAIN_FILENAME, SkillEditForm, DEFAULT_AGENT_CAPABILITIES, stripPersonaPreamble, AgentCreator, DEFAULT_AGENT_TYPES, DEFAULT_AGENT_TEMPLATES, AgentAvatarField, isValidAgentName, AgentConnectInstructions, TaskRunsDialog, TaskActivityDialog, WorkflowStepBar, ConfigForm, AgentEditView, AgentMainView, AgentCreatedView, AgentCreateView, WorkflowRunStatus, ThreadStatusLine, WorkflowThreadStrip, WorkflowStepAction, WorkflowThreadStartedBy, TaskFlow, useWorkflowUsage, WEB_WORKFLOWS, DASHBOARD_PINNED, CUSTOM_TASK, REMIND_TASK, DASHBOARD_OPERATIONS, sortByRecentUse, taskComposerToCreateRequest, taskComposerToUpdateRequest, composerToWorkflowUpdate, moveTargets, workflowToComposerValues, REMIND_TASK_ID, CUSTOM_TASK_ID, taskToComposerValues, TaskComposer, renderWorkflowIcon, AUTOMATION_EVENTS, TaskPlan, TaskStartDialog, ThreadLauncher, NewThreadDialog, GENERATE_IMAGE_ID, IMAGE_ASPECT_AUTO, deriveAnnotationName, ANNOTATE_ID, recordWorkflowUse, openWorkflowLaunch, useWorkflowLaunchRequest, AgentBar, AgentBarNotes, AgentBarQueuedNote, AgentBarProbeAnswer, BUILTIN_SKILLS, TaskEmptyState,
|
|
47
|
+
import { EntityChip, StepTraceSummary, StepTrace, getCurrentAgentStepPresentation, AssistantEntity, ThreadActivity, SubAgentLane, getAgentStepPresentation, stepAccent, MODEL_TIER_ICON_MAP, StepRow, StepNarration, StepSummary, StepDetail, StepOutcome, StepParams, GoalCriteria, SubStepGroup, MODEL_TIER_LABELS, fromPlanSteps, latestMessageTime, isSupersededStop, compactThreadActivity, unnotifiedMentions, notifiedLabel, linkedRunsFromActivity, getModelIcon, SubagentRoster, buildLibrarySkills, filterLibrarySkills, SKILL_SOURCE_LABELS, SKILL_TYPE_LABELS, SkillViewToggle, SkillFilterChips, SkillTile, SkillGenerateForm, SkillLibraryDetail, parseSkillFrontmatter, SKILL_MAIN_FILENAME, SkillEditForm, DEFAULT_AGENT_CAPABILITIES, stripPersonaPreamble, AgentCreator, DEFAULT_AGENT_TYPES, DEFAULT_AGENT_TEMPLATES, AgentAvatarField, isValidAgentName, AgentConnectInstructions, TaskRunsDialog, TaskActivityDialog, WorkflowStepBar, ConsentPage, ConsentCard, ConsentHeader, ConsentNotice, ConsentSection, ConsentBulletList, ConsentStrong, ConsentText, ConfigForm, AgentEditView, AgentMainView, AgentCreatedView, AgentCreateView, WorkflowRunStatus, ThreadStatusLine, WorkflowThreadStrip, WorkflowStepAction, WorkflowThreadStartedBy, TaskFlow, useWorkflowUsage, WEB_WORKFLOWS, DASHBOARD_PINNED, CUSTOM_TASK, REMIND_TASK, DASHBOARD_OPERATIONS, sortByRecentUse, taskComposerToCreateRequest, taskComposerToUpdateRequest, composerToWorkflowUpdate, moveTargets, workflowToComposerValues, REMIND_TASK_ID, CUSTOM_TASK_ID, taskToComposerValues, TaskComposer, renderWorkflowIcon, AUTOMATION_EVENTS, TaskPlan, TaskStartDialog, ThreadLauncher, NewThreadDialog, GENERATE_IMAGE_ID, IMAGE_ASPECT_AUTO, deriveAnnotationName, ANNOTATE_ID, recordWorkflowUse, openWorkflowLaunch, useWorkflowLaunchRequest, AgentBar, AgentBarNotes, AgentBarQueuedNote, AgentBarProbeAnswer, BUILTIN_SKILLS, TaskEmptyState, ConsentMessage, CopyableUrl, ConsentPermissionList, ConsentActions, ConsentFootnote, AgentBarStatus, AgentBarIconButton, AgentBarMenu, composePersona, newThreadToRequest, importSkillFile, importSkillFromUrl, WorkflowRunner, skillSlug, serializeSkill, toPlanSteps, useWorkflowView, STATUS_LABELS, asTaskStatus, workflowToSkillMarkdown, closeWorkflowLaunch } from '../chunk-44FPFTU2.js';
|
|
48
48
|
import { MultiSelect } from '../chunk-CQCC7LE7.js';
|
|
49
49
|
import { PersonPill, documentScopeLabels, matchWorkflowScope } from '../chunk-7S76Q5RK.js';
|
|
50
50
|
import { SectionLabel } from '../chunk-MQEN62NR.js';
|
|
@@ -57,7 +57,7 @@ import { FilterInput } from '../chunk-YU2KUMGE.js';
|
|
|
57
57
|
import '../chunk-SUDPZ5IQ.js';
|
|
58
58
|
import { GridView } from '../chunk-7F5Z4K5W.js';
|
|
59
59
|
import { StreamedArtifactFrame } from '../chunk-LOJVUGBJ.js';
|
|
60
|
-
import { DEFAULT_PASSWORD_RULES, AccountRecoveryDialog, promptSaveCredential, AuthLayout, AuthHeading, AuthField, AuthInput, AuthFieldBadge, AuthLink, AuthNote, RevealablePasswordInput, AuthConsent, AuthSubmitButton, AuthDivider, AuthAlert, RecoveryKeyDialog, parseAuthError, AuthOfflineBadge, AuthTabs, splitAuthHash, withTrailingFragment } from '../chunk-
|
|
60
|
+
import { DEFAULT_PASSWORD_RULES, AccountRecoveryDialog, promptSaveCredential, useFragmentCredentials, AuthLayout, AuthHeading, AuthField, AuthInput, AuthFieldBadge, AuthLink, AuthNote, RevealablePasswordInput, AuthConsent, AuthSubmitButton, AuthDivider, AuthAlert, RecoveryKeyDialog, parseAuthError, AuthOfflineBadge, AuthTabs, splitAuthHash, withTrailingFragment } from '../chunk-VN4FSGBR.js';
|
|
61
61
|
import { PasswordStrengthInput } from '../chunk-P6OLZGQA.js';
|
|
62
62
|
import { attendeeKey, upcomingOf, conferenceUrl, isWebinarConference, canJoinEvent, calendarToListItem, buildGridEvents, pendingCreateToGrid, newEventDraft, MiniMonth, CalendarList, CalendarGrid, printCalendar, EventDetails, ScopeDialog, CalendarFormDialog, ProposeTimeDialog, isCalendarAttachment, parseIcsInvite, formatEventWhen, groupSlotsByDay, publicBookingMessage, formatSlotRange, zoneOptions, buildTimeChangeRequest, eventToDraft, needsScope, validateDraft, CALENDAR_DEFAULT_LABELS, buildCreateBody, buildDeleteTarget, EventEditor, toSettingsValue, CalendarSettingsForm, describeCalendarError, normalizeFeedUrl, parseOverlayLink, isAllDayDraft, draftRangeUtc, freeBusyToRows, SchedulingAssistant, applySuggestion, toSuggestionViews, bookingLink, defaultRoomWindow, bookingToForm, emptyBookingForm, slugify, WeeklyHoursEditor, validateBookingForm, formToBookingBody, WEEKDAY_NAMES, formatBusy, buildEditRequest } from '../chunk-AWVGKHJT.js';
|
|
63
63
|
import { detectTimeZone, utcToDate, formatPlainDate, formatInZone, safeZone, todayInZone, addDays, listTimeZones, wallToUtc } from '../chunk-OJIX5NBN.js';
|
|
@@ -93,11 +93,11 @@ import { ModalHeader, ModalScaffold, ModalSection, ModalSectionTitle } from '../
|
|
|
93
93
|
import '../chunk-7F6CBP3Z.js';
|
|
94
94
|
import '../chunk-VUNV25KB.js';
|
|
95
95
|
import { QueryClient, useQueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
96
|
-
import { useWorkspaces, ArbiBotHeadIcon, IN_FLIGHT_DOCUMENT_STATUSES, useOfflineDocumentIds, useOpenViewerDocumentId, FINISHED_DOCUMENT_STATUSES, useMailPolicy, useProcessingTasks, resolveDocumentStatus, useArbi, useIsCreatingTag, HtmlIcon, useUpdateDocuments, useDeleteDocuments, useRenameFolder, useDownloadDocuments, useTags, useDocumentHostActions, useDocumentThumbnails, useArbiSessionState, selectDraft, useArbiSessionStore, useAudioRecorder, MicRecordingOverlay, useArbiWsStatus, useArbiWsStore, useUserSettings, useProcessingTask, useDocumentPendingSync, useWorkspaceUsers, useMessageTimer, useDocuments, useAvailableModels, formatGbp, CitationRenderer, useArbiSession, buildMentionCandidates, useConversations, ASSISTANT_MENTION_LABEL, useConversationItems, useDeleteMessage, useArbiHost, transcriptSegmentOf, useConfig, useThinkingContent, useCreateFact, useCreateFacts, workflowStepOf, stripSpeakerPrefix, MessageArtifactCard, useConversationData, useBranchNavigation, useSkills, useBuiltinCommands, useDocumentsSupport, useConversationActivity, useMessageDetails, useWorkflows, getWorkspaceKind, resolveConfigModel, useRunConversation, useWorkspaceActivity, callLink, openCall, startDmCall, calendarQueryKeys, mailQueryKeys, arbiQueryKeys, invalidateConversationLists, isWorkspaceNotificationType, useNotifications, useDeleteNotifications, useMarkNotificationsRead, useCallsEnabled, serverNotificationBellEntry, documentDisplayName, useWorkspaceNotificationLevel, useFollowThread, useUploadSkillFiles, useSaveSkill, useSetSkillVisibility, useDeleteSkill, useSkillSource, useAgentModels, useMcpTools, useAgentConfig, useAgentWorkspaces, useCreateAgent, useSaveAgentConfig, useGrantAgentAccess, useRevokeAgentAccess, useGenerateAgentAvatar, useWorkflowRuns, useAgents, ArtifactCanvas, ConversationScope, useConversation, useTagKindSchema, useCreateTag, useSetTagValues, useUpdateTagKindSchema, useUpdateTag, useFacts, useDeleteTag, useExtractEntities, useEntityExtractionDocIds, useStartWorkspaceTransfer, useResumeWorkspaceTransfer, useCancelWorkspaceTransfer, useWorkspaceTransfer, useWorkspaceTransfers, useWorkspaceExportDownload, usePlanWorkspaceTransfer, isTransferResumable, isTransferFinished, useShellWorkspaces, useProfile, useUpdateProfile, useRequestEmailChange, useConfirmEmailChange, useNameEditor, useAvatarCrop, useEmailChange, ImageCropModal, useIdentityVerification, usePasswordChange, usePasswordChangeForm, useNotificationPreferences, useSessions, useCurrentSessionId, useTerminateSession, useSignOut, useDeleteAccount, useDeleteAccountFlow, useMailClient, defaultMailAlias, useClaimNativeAlias, useMailOnline, useConnectMailAccount, useDisconnectMailAccount, useMailAccounts, useUpdateUserSettings, useConnectorVendorVisibility, useConnectorCatalog, useMyConnectors, useDisconnectConnector, useSlackConnection, useDisconnectSlack, isMailboxSyncVendor, isSharePointVendor, useWorkspaceTrash, useInvalidateStorage, useStorageActions, useStorageItems, useStorageItemNames, useStorageProjects, useUserUsageToday, useStorageSnapshots, useUpdateWorkspace, useAddWorkspaceMembers, useRemoveWorkspaceMembers, useSetWorkspaceMemberRoles, toShellWorkspace, useEnableMailboxSync, useMailboxFolders, useEnableDriveSync, useDriveFolderChildren, connectorErrorStatus, useProjectInvoices, useProjects, useUpdateProjectFields, useChargeWatch, useAddonQuote, STILL_WORKING, useProjectBillingPortal, useProjectUsage, useIsSlow, useProducts, useCreateProject, useDeleteProject, useRefreshProject, useContacts, useInviteContacts, useCanCreateProjects, useDeleteWorkspaces, PROJECT_CREATION_DENIED_REASON, useCreateContact, useUpdateContact, useLinkContact, useEntitlements, useImportContacts, entitlementRefusal, useDeleteContact, MAX_RETRIEVE_DOC_IDS, useSemanticSearch, useAssignDocTags, useMailUnlock, useMailFolders, useMailMessages, useMailDraftCompose, useMailMessage, useMailCache, MailOfflineUnavailableError, accountPath, useCalendarEvents, useCalendars, useCanHostCalls, useOpenCallMeetingChat, usePeople, useFetchCalendarEvent, useCalendarSettings, useCalendarOverlays, useCalendarOutbox, useCalendarAccounts, useSyncAccountsOnOpen, useResumeCalendarAccountConnect, useCreateEvent, useUpdateEvent, useDeleteEvent, useMoveEvent, useRespondToEvent, useCreateCalendar, useUpdateCalendar, useDeleteCalendar, useImportCalendar, useSaveCalendarSettings, useRefreshCalendar, useCalendarEvent, useMailAttachmentText, useCalendarEventByUid, getPublicBookingPage, bookPublicSlot, PublicBookingError, isZipFile, prepareUploadFiles, UPLOAD_MAX_FILE_SIZE, filesFromDrop, UPLOAD_ACCEPT, useUploadFromUrls, useUploadFiles, useUpdateDocTag, useRemoveDocTags, subscribeDocumentRows, useGenerateDocTags, useDocumentsLoading, selectViewingDocumentId, useRelatedDocuments, myChatId, useChatThread, useChatPost, useDeleteChatMessage, useMarkChatRead, setOpenChat, useAgentDmStatus, annotateThread, userDisplayName, DmComposer, TypingIndicator, useRenameChat, useAddChatMembers, useRemoveChatMember, useChats, useChatSummaries, useCreateGroupChat, useApplyChatModel, AUTO_CHAT_MODEL, formatGbpPerMillionTokens, useConfigSchema, useSaveConfig, useConversationPendingAuth, openAccessRequest, useRequestWorkspaceAccess, threadTabId, useUpdateConversation, useCanEditShared, useActOnStep, useCreateWork, useRunWorkflow, useStartTaskQuery, useCreateWorkflow, useUpdateWorkflow, usePlanWork, useWorkItems, TaskThreadPendingError, useMentionCandidates, useAgentRunControl, useConnectRunStream, useAnswerAgentQuestion, useConversationIsShared, useWorkspaceRole, buildPendingFirstTurn, useConversationTurn, useAskAgain, getOrphanedLastMessage, refuseChatWhenOffline, useThreadDocument, useDocumentAutoAdd, useAutoSendDraft, READ_ONLY_MEETING_TEXT, useAgentSession, useStartAgentSession, useCloseAgentSession, downloadRecoveryFile, LinkedInIcon, GoogleIcon, AppleIcon, useCurrentUser, isQueuedCalendarWrite, DateSeparator, ChatBubble, isAliasTakenError, nextAliasSuggestion, aliasTakenMessage, mailJson, connectorReturnTo, DmAvatar, ConversationList, GitHubIcon, getRelatedTotal, isDeploymentUserNotification, describeServerNotification, getWorkspaceActionText, getWorkspaceSentPhrase, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_TITLE, documentActivityPhrase, isSignatureNotificationType, inputRequestTitle, WORK_NOTIFICATION_LABELS, useConversationThreads, usePassageQuotes, useUpdateFact, useDeleteFact, useAccountClient, useDriveFolderDocCount, useChangeProjectPlan, useCancelProjectSubscription, usePreviewProjectPlanChange, useAddProjectAddonBlock, usePlanQuote, useCreateProjectCheckout, useInvalidateProjects, fileAttachment, useMailProjects, useSaveMailDraft, useSendMail, useMailDraftReplaced, useCalendarInvitations, useDecideCounter, useSearchContacts, usePublishCalendar, useCalendarShares, useShareCalendar, useUnshareCalendar, useSubscribeCalendar, useHolidayCountries, useAddHolidayCalendar, cancelPublicBooking, useInvalidateAfterTransfer, useConfigs, useSaveConfigField, useDeleteConfig, isFullConfig, AiAnswer, ArbiWebSocketProvider, signatureNotificationPhrase, signatureRequestMeta, getNotificationTypeMeta, useMailDraftEditor, useFreeBusy, useFindTime, useCalendarSupport, useStartCalendarAccountOAuth, useConnectOAuthAccount, useBookingPages, useDeleteBookingPage, useRooms, SHAREPOINT_VENDORS, useUpdateProjectNextPeriodAddons, useUpdateProjectAddonSettings, useSyncCalendarAccount, useUpdateCalendarAccount, useDisconnectCalendarAccount, ACCOUNT_VENDOR, useCalDavProfiles, useConnectCalDavAccount, useSaveBookingPage, useCreateRoom } from '@arbidocs/react';
|
|
96
|
+
import { useWorkspaces, ArbiBotHeadIcon, IN_FLIGHT_DOCUMENT_STATUSES, useOfflineDocumentIds, useOpenViewerDocumentId, FINISHED_DOCUMENT_STATUSES, useMailPolicy, useProcessingTasks, resolveDocumentStatus, useArbi, useIsCreatingTag, HtmlIcon, useUpdateDocuments, useDeleteDocuments, useRenameFolder, useDownloadDocuments, useTags, useDocumentHostActions, useDocumentThumbnails, useArbiSessionState, selectDraft, useArbiSessionStore, useAudioRecorder, MicRecordingOverlay, useArbiWsStatus, useArbiWsStore, useUserSettings, useProcessingTask, useDocumentPendingSync, useWorkspaceUsers, useMessageTimer, useDocuments, useAvailableModels, formatGbp, CitationRenderer, useArbiSession, buildMentionCandidates, useConversations, ASSISTANT_MENTION_LABEL, useConversationItems, useDeleteMessage, useArbiHost, transcriptSegmentOf, useConfig, useThinkingContent, useCreateFact, useCreateFacts, workflowStepOf, stripSpeakerPrefix, MessageArtifactCard, useConversationData, useBranchNavigation, useSkills, useBuiltinCommands, useDocumentsSupport, useConversationActivity, useMessageDetails, useWorkflows, getWorkspaceKind, resolveConfigModel, useRunConversation, useWorkspaceActivity, callLink, openCall, startDmCall, calendarQueryKeys, mailQueryKeys, arbiQueryKeys, invalidateConversationLists, isWorkspaceNotificationType, useNotifications, useDeleteNotifications, useMarkNotificationsRead, useCallsEnabled, serverNotificationBellEntry, documentDisplayName, useWorkspaceNotificationLevel, useFollowThread, useUploadSkillFiles, useSaveSkill, useSetSkillVisibility, useDeleteSkill, useSkillSource, useAgentModels, useMcpTools, useAgentConfig, useAgentWorkspaces, useCreateAgent, useSaveAgentConfig, useGrantAgentAccess, useRevokeAgentAccess, useGenerateAgentAvatar, useWorkflowRuns, useAgents, ArtifactCanvas, ConversationScope, useConversation, useTagKindSchema, useCreateTag, useSetTagValues, useUpdateTagKindSchema, useUpdateTag, useFacts, useDeleteTag, useExtractEntities, useEntityExtractionDocIds, useStartWorkspaceTransfer, useResumeWorkspaceTransfer, useCancelWorkspaceTransfer, useWorkspaceTransfer, useWorkspaceTransfers, useWorkspaceExportDownload, usePlanWorkspaceTransfer, isTransferResumable, isTransferFinished, useShellWorkspaces, useProfile, useUpdateProfile, useRequestEmailChange, useConfirmEmailChange, useNameEditor, useAvatarCrop, useEmailChange, ImageCropModal, useIdentityVerification, usePasswordChange, usePasswordChangeForm, useNotificationPreferences, useSessions, useCurrentSessionId, useTerminateSession, useSignOut, useDeleteAccount, useDeleteAccountFlow, useMailClient, defaultMailAlias, useClaimNativeAlias, useMailOnline, useConnectMailAccount, useDisconnectMailAccount, useMailAccounts, useUpdateUserSettings, useConnectorVendorVisibility, useConnectorCatalog, useMyConnectors, useDisconnectConnector, useSlackConnection, useDisconnectSlack, isMailboxSyncVendor, isSharePointVendor, useWorkspaceTrash, useInvalidateStorage, useStorageActions, useStorageItems, useStorageItemNames, useStorageProjects, useUserUsageToday, useStorageSnapshots, useUpdateWorkspace, useAddWorkspaceMembers, useRemoveWorkspaceMembers, useSetWorkspaceMemberRoles, toShellWorkspace, useEnableMailboxSync, useMailboxFolders, useEnableDriveSync, useDriveFolderChildren, connectorErrorStatus, useProjectInvoices, useProjects, useUpdateProjectFields, useChargeWatch, useAddonQuote, STILL_WORKING, useProjectBillingPortal, useProjectUsage, useIsSlow, useProducts, useCreateProject, useDeleteProject, useRefreshProject, useBoxRole, useContacts, useInviteContacts, useCanCreateProjects, useDeleteWorkspaces, PROJECT_CREATION_DENIED_REASON, useCreateContact, useUpdateContact, useLinkContact, useEntitlements, useImportContacts, entitlementRefusal, useDeleteContact, MAX_RETRIEVE_DOC_IDS, useSemanticSearch, useAssignDocTags, useMailUnlock, useMailFolders, useMailMessages, useMailDraftCompose, useMailMessage, useMailCache, MailOfflineUnavailableError, accountPath, useCalendarEvents, useCalendars, useCanHostCalls, useOpenCallMeetingChat, usePeople, useFetchCalendarEvent, useCalendarSettings, useCalendarOverlays, useCalendarOutbox, useCalendarAccounts, useSyncAccountsOnOpen, useResumeCalendarAccountConnect, useCreateEvent, useUpdateEvent, useDeleteEvent, useMoveEvent, useRespondToEvent, useCreateCalendar, useUpdateCalendar, useDeleteCalendar, useImportCalendar, useSaveCalendarSettings, useRefreshCalendar, useCalendarEvent, useMailAttachmentText, useCalendarEventByUid, getPublicBookingPage, bookPublicSlot, PublicBookingError, isZipFile, prepareUploadFiles, UPLOAD_MAX_FILE_SIZE, filesFromDrop, UPLOAD_ACCEPT, useUploadFromUrls, useUploadFiles, useUpdateDocTag, useRemoveDocTags, subscribeDocumentRows, useGenerateDocTags, useDocumentsLoading, selectViewingDocumentId, useRelatedDocuments, myChatId, useChatThread, useChatPost, useDeleteChatMessage, useMarkChatRead, setOpenChat, useAgentDmStatus, annotateThread, userDisplayName, DmComposer, TypingIndicator, useRenameChat, useAddChatMembers, useRemoveChatMember, useChats, useChatSummaries, useCreateGroupChat, useApplyChatModel, AUTO_CHAT_MODEL, formatGbpPerMillionTokens, useConfigSchema, useSaveConfig, useConversationPendingAuth, openAccessRequest, useRequestWorkspaceAccess, threadTabId, useUpdateConversation, useCanEditShared, useActOnStep, useCreateWork, useRunWorkflow, useStartTaskQuery, useCreateWorkflow, useUpdateWorkflow, usePlanWork, useWorkItems, TaskThreadPendingError, useMentionCandidates, useAgentRunControl, useConnectRunStream, useAnswerAgentQuestion, useConversationIsShared, useWorkspaceRole, buildPendingFirstTurn, useConversationTurn, useAskAgain, getOrphanedLastMessage, refuseChatWhenOffline, useThreadDocument, useDocumentAutoAdd, useAutoSendDraft, READ_ONLY_MEETING_TEXT, useAgentSession, useStartAgentSession, useCloseAgentSession, downloadRecoveryFile, LinkedInIcon, GoogleIcon, AppleIcon, useCurrentUser, isQueuedCalendarWrite, DateSeparator, ChatBubble, isAliasTakenError, nextAliasSuggestion, aliasTakenMessage, mailJson, connectorReturnTo, DmAvatar, ConversationList, GitHubIcon, getRelatedTotal, isDeploymentUserNotification, describeServerNotification, getWorkspaceActionText, getWorkspaceSentPhrase, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_TITLE, documentActivityPhrase, isSignatureNotificationType, inputRequestTitle, WORK_NOTIFICATION_LABELS, useConversationThreads, usePassageQuotes, useUpdateFact, useDeleteFact, useAccountClient, useDriveFolderDocCount, useChangeProjectPlan, useCancelProjectSubscription, usePreviewProjectPlanChange, useAddProjectAddonBlock, usePlanQuote, useCreateProjectCheckout, useInvalidateProjects, fileAttachment, useMailProjects, useSaveMailDraft, useSendMail, useMailDraftReplaced, useCalendarInvitations, useDecideCounter, useSearchContacts, usePublishCalendar, useCalendarShares, useShareCalendar, useUnshareCalendar, useSubscribeCalendar, useHolidayCountries, useAddHolidayCalendar, cancelPublicBooking, useInvalidateAfterTransfer, useConfigs, useSaveConfigField, useDeleteConfig, isFullConfig, AiAnswer, ArbiWebSocketProvider, signatureNotificationPhrase, signatureRequestMeta, getNotificationTypeMeta, useMailDraftEditor, useFreeBusy, useFindTime, useCalendarSupport, useStartCalendarAccountOAuth, useConnectOAuthAccount, useBookingPages, useDeleteBookingPage, useRooms, SHAREPOINT_VENDORS, useUpdateProjectNextPeriodAddons, useUpdateProjectAddonSettings, useSyncCalendarAccount, useUpdateCalendarAccount, useDisconnectCalendarAccount, ACCOUNT_VENDOR, useCalDavProfiles, useConnectCalDavAccount, useSaveBookingPage, useCreateRoom } from '@arbidocs/react';
|
|
97
97
|
import { mergeAgentSteps, extractSubagentLanes, getCurrentStep, computeRunStats, formatTokens, isNearAiUsageBudget, getSubagentBranchRecord, buildCitationChunkData, topLevelAgentSteps, findMainSiblingLeaf, sliceToSubagentThread, getAgentStepLabel, subagentJobLabel, getStepDisplay, getStepTool, findLeafForTaskMessage, Arbi, FLAT_TAG_KINDS, getEligibleParentTags, canTagHaveParent, isFlatKind, TAG_NESTING_MAX_DEPTH, TAG_KINDS, formatFileSize, filterDocumentTags, isLabelTag, refusalReason, isPresenceTag, isAnnotationTag, flattenTagTree, tagsForScope, tagsOfGroup, chats, buildRetrievalFullContextTool, buildRetrievalChunkTool, getChildTags, tagUseCount, ArbiApiError, PRESENCE_KINDS, isEntityTag, DuplicateContactError, wouldCreateTagCycle, getTagDescendantIds } from '@arbidocs/sdk/browser';
|
|
98
98
|
import { browserSessionStateStorage, parseCallFragment, validateRecoveryKeyFile, RECOVERY_KEY_ERRORS, parseRecoveryUrl, prewarmKeyPairs, decryptRecoveryKey, unlockIdentityWithPassword, createRecoveryUrl, bytesToBase64, initSodium } from '@arbidocs/client';
|
|
99
99
|
import React7, { memo, useMemo, lazy, useRef, useEffect, useCallback, useState, forwardRef, useLayoutEffect, useImperativeHandle, createContext, useContext, useSyncExternalStore, Suspense, Fragment as Fragment$1, useId } from 'react';
|
|
100
|
-
import { Users, MessageCircleMore, SquarePen, BookOpen, MessagesSquare, Pencil, Download, Mail, FolderInput, Trash2, Eye, Sparkles, Play, ArrowDownToLine, RefreshCw, Zap, AlertTriangle, FileX, SkipForward, Loader2, Clock, CheckCircle, ArrowUpRight, Send, Settings, Edit3, Copy, Link, Share2, Check, Milestone, RotateCcw, FileText, Network, ChevronRight, Bell, Activity, Info, UserCheck, Upload, Link2, Search, Plus, ArrowLeft, ExternalLink as ExternalLink$1, Tags, CheckCircle2, Monitor, UserCircle, KeyRound, Radio, LogOut, Wifi, Lock, HardDrive, User, HatGlasses, MessageSquare, PlugZap, Gauge, Cloud, XCircle, Building2, Printer, SquareStack, Table, Cake, X, UserRound, Star, Tag, Video, CalendarDays, MapPin, Globe, Calendar, Hash, File as File$1, FileType, FolderOpen, Fingerprint, Paperclip, CircleCheck, TriangleAlert, LoaderCircle, NotebookPen, Columns3, EyeOff, ArrowUp, ArrowDown, ZoomOut, Camera, FilePlus2, UserMinus, UserPlus, UsersRound, Code2, Infinity, ChevronDown, MoreHorizontal, Wrench, RotateCw, Square, BadgeCheck, Shield, ClipboardList, ArrowUpCircle, Contact, Scale, BookA, Quote, Inbox, CalendarX, CalendarCheck, Phone, Pause, Minimize2, Maximize2, Minus, CalendarSearch, DoorOpen, AlertCircle } from 'lucide-react';
|
|
100
|
+
import { Users, MessageCircleMore, SquarePen, BookOpen, MessagesSquare, Pencil, Download, Mail, FolderInput, Trash2, Eye, Sparkles, Play, ArrowDownToLine, RefreshCw, Zap, AlertTriangle, FileX, SkipForward, Loader2, Clock, CheckCircle, ArrowUpRight, Send, Settings, Edit3, Copy, Link, Share2, Check, Milestone, RotateCcw, FileText, Network, ChevronRight, Bell, Activity, Info, UserCheck, Upload, Link2, Search, Plus, ArrowLeft, ExternalLink as ExternalLink$1, Tags, CheckCircle2, Monitor, UserCircle, KeyRound, Radio, LogOut, Wifi, Lock, HardDrive, User, HatGlasses, MessageSquare, PlugZap, Gauge, Cloud, XCircle, Building2, Palette, Type, Printer, SquareStack, Table, Cake, X, UserRound, Star, Tag, Video, CalendarDays, MapPin, Globe, Calendar, Hash, File as File$1, FileType, FolderOpen, Fingerprint, Paperclip, CircleCheck, TriangleAlert, LoaderCircle, NotebookPen, Columns3, EyeOff, ArrowUp, ArrowDown, ZoomOut, Camera, FilePlus2, UserMinus, UserPlus, UsersRound, Code2, Infinity, ChevronDown, MoreHorizontal, Wrench, RotateCw, Square, BadgeCheck, Shield, ClipboardList, ArrowUpCircle, Contact, Scale, BookA, Quote, Inbox, CalendarX, CalendarCheck, Phone, LogIn, Pause, Minimize2, Maximize2, Minus, CalendarSearch, DoorOpen, AlertCircle } from 'lucide-react';
|
|
101
101
|
import { isAgent, UserEntity, getUserInitials, getUserDisplayName, getUserAvatarColor, agentAvatarColors, Avatar, AvatarImage, AvatarFallback, cn, ShieldIcon, getWorkspaceColor, getFileTypeIcon, DocumentEntity, getDocumentTitle, formatFolderLabel, getEntityLabel, getEntityColor, VisibilityIcon, formatFriendlyDate, getDocumentSubject, Badge, getTagTypeIcon, getTagTypeLabel, VisibilityToggle, TagEntity, ThreadVisibilityIcon, Button, isImageDocument, Tooltip, TooltipTrigger, TooltipContent, Dialog, DialogContent, formatRelativeTime, ProviderIcon, EntityIcon, Label, Input, Textarea, DialogHeader, DialogTitle, DialogDescription, tagKindNouns, tagKindTitle, IconToggle, Switch, Checkbox, DialogTrigger, ProjectEntity, DialogFooter, getDocIcon, getDocumentNature, getDocumentAuthor, markdownToPlainText, formatDocDate, getDocumentDate, friendlyFileType, canonicalFolderPath, DebouncedInput, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, Slider, AgentBadge, PresenceLabel, TooltipProvider, EntityPill, Popover, PopoverAnchor, PopoverTrigger, PopoverContent, Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, ScrollArea, ArbiIcon, Tabs, TabsList, TabsTrigger, TabsContent, ARBI_MARK_SRC, VerifiedToggle, Progress } from '@arbidocs/react/ui';
|
|
102
102
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
103
103
|
import { hasMessageBody, notify, linkMentions, useNotify, sharedSearchSession, takePendingSearch, useTurnDocumentId, useOpenDocumentId, useRegisterOpenDocument } from '@arbidocs/react/shell';
|
|
@@ -8192,6 +8192,32 @@ function ConnectedSsoDisconnect() {
|
|
|
8192
8192
|
)
|
|
8193
8193
|
] });
|
|
8194
8194
|
}
|
|
8195
|
+
function ConnectedBoxPortalSection() {
|
|
8196
|
+
const { isBoxAdmin } = useBoxRole();
|
|
8197
|
+
const { licenceUrl } = useBlocksEnvironment().runtimeConfig;
|
|
8198
|
+
if (!isBoxAdmin || !licenceUrl) return null;
|
|
8199
|
+
return /* @__PURE__ */ jsx(SettingsSection, { icon: /* @__PURE__ */ jsx(Building2, {}), title: "Box", testId: "box-portal-section", children: /* @__PURE__ */ jsx(SettingsCard, { children: /* @__PURE__ */ jsx(
|
|
8200
|
+
SettingsRow,
|
|
8201
|
+
{
|
|
8202
|
+
label: "Manage your Box in the ARBI portal",
|
|
8203
|
+
description: "Users, storage, AI usage and billing.",
|
|
8204
|
+
children: /* @__PURE__ */ jsxs(
|
|
8205
|
+
"a",
|
|
8206
|
+
{
|
|
8207
|
+
href: licenceUrl,
|
|
8208
|
+
target: "_blank",
|
|
8209
|
+
rel: "noopener noreferrer",
|
|
8210
|
+
className: "inline-flex shrink-0 items-center gap-1.5 self-start rounded-md border border-input bg-background px-3 py-1.5 text-sm font-medium text-foreground hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11",
|
|
8211
|
+
"data-testid": "box-portal-link",
|
|
8212
|
+
children: [
|
|
8213
|
+
"Open portal",
|
|
8214
|
+
/* @__PURE__ */ jsx(ExternalLink$1, { className: "size-3.5", "aria-hidden": true })
|
|
8215
|
+
]
|
|
8216
|
+
}
|
|
8217
|
+
)
|
|
8218
|
+
}
|
|
8219
|
+
) }) });
|
|
8220
|
+
}
|
|
8195
8221
|
function ServerConnectionRow({ onRefresh, ...status }) {
|
|
8196
8222
|
const { runtimeConfig } = useBlocksEnvironment();
|
|
8197
8223
|
const [isRefreshing, setIsRefreshing] = useState(false);
|
|
@@ -8230,6 +8256,7 @@ function ConnectedAccountSettings({
|
|
|
8230
8256
|
const [logoutOpen, setLogoutOpen] = useState(false);
|
|
8231
8257
|
return /* @__PURE__ */ jsxs(SettingsPanel, { className: "max-w-2xl", children: [
|
|
8232
8258
|
/* @__PURE__ */ jsx(ConnectedProfileCard, { avatarClassName, nameBadge: profileBadge }),
|
|
8259
|
+
/* @__PURE__ */ jsx(ConnectedBoxPortalSection, {}),
|
|
8233
8260
|
afterProfile,
|
|
8234
8261
|
/* @__PURE__ */ jsxs(SettingsDisclosure, { title: "More", testId: "account-more-settings", children: [
|
|
8235
8262
|
/* @__PURE__ */ jsx(ConnectedSsoDisconnect, {}),
|
|
@@ -9914,6 +9941,62 @@ function organisationSettingsSection({
|
|
|
9914
9941
|
)
|
|
9915
9942
|
};
|
|
9916
9943
|
}
|
|
9944
|
+
function appearanceSettingsSection(options2) {
|
|
9945
|
+
const TabIcon = options2.theme ? Palette : Type;
|
|
9946
|
+
return {
|
|
9947
|
+
id: "appearance",
|
|
9948
|
+
label: "Appearance",
|
|
9949
|
+
icon: /* @__PURE__ */ jsx(TabIcon, { className: "w-6 h-6" }),
|
|
9950
|
+
render: () => /* @__PURE__ */ jsx(AppearanceSection, { ...options2 })
|
|
9951
|
+
};
|
|
9952
|
+
}
|
|
9953
|
+
function AppearanceSection({
|
|
9954
|
+
appearance,
|
|
9955
|
+
theme,
|
|
9956
|
+
themePreview,
|
|
9957
|
+
icon: icon2 = /* @__PURE__ */ jsx(Palette, { className: "size-4" }),
|
|
9958
|
+
description = "Colours and type on this device."
|
|
9959
|
+
}) {
|
|
9960
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9961
|
+
appearance && /* @__PURE__ */ jsx(ReaderAppearance, { bundle: appearance }),
|
|
9962
|
+
theme && /* @__PURE__ */ jsx(
|
|
9963
|
+
SettingsSection,
|
|
9964
|
+
{
|
|
9965
|
+
icon: icon2,
|
|
9966
|
+
title: "Appearance",
|
|
9967
|
+
description,
|
|
9968
|
+
testId: appearance ? "settings-appearance-theme" : "settings-appearance",
|
|
9969
|
+
children: /* @__PURE__ */ jsx(
|
|
9970
|
+
ThemeEditor,
|
|
9971
|
+
{
|
|
9972
|
+
bundle: theme,
|
|
9973
|
+
variant: "collapsed",
|
|
9974
|
+
preview: themePreview,
|
|
9975
|
+
testIdPrefix: "settings-theme"
|
|
9976
|
+
}
|
|
9977
|
+
)
|
|
9978
|
+
}
|
|
9979
|
+
)
|
|
9980
|
+
] });
|
|
9981
|
+
}
|
|
9982
|
+
function ReaderAppearance({ bundle }) {
|
|
9983
|
+
const state = bundle.useStore();
|
|
9984
|
+
const { defaults } = bundle;
|
|
9985
|
+
const isDefault = state.pairingId === defaults.pairingId && state.colorScheme === defaults.colorScheme && state.textSize === defaults.textSize;
|
|
9986
|
+
return /* @__PURE__ */ jsx(
|
|
9987
|
+
AppearanceSettings,
|
|
9988
|
+
{
|
|
9989
|
+
colorScheme: state.colorScheme,
|
|
9990
|
+
onColorSchemeChange: state.setColorScheme,
|
|
9991
|
+
textSize: state.textSize,
|
|
9992
|
+
onTextSizeChange: state.setTextSize,
|
|
9993
|
+
pairingId: state.pairingId,
|
|
9994
|
+
onPairingChange: state.setPairing,
|
|
9995
|
+
pairingIds: bundle.pairingIds,
|
|
9996
|
+
onReset: isDefault ? void 0 : state.reset
|
|
9997
|
+
}
|
|
9998
|
+
);
|
|
9999
|
+
}
|
|
9917
10000
|
function ConnectedProjectStorage({ projectExtId }) {
|
|
9918
10001
|
const { data, isLoading } = useStorageProjects("mine", projectExtId);
|
|
9919
10002
|
const project = data?.projects.find((p) => p.project_ext_id === projectExtId);
|
|
@@ -11288,6 +11371,46 @@ function ConnectedDriveSyncDialog({
|
|
|
11288
11371
|
}
|
|
11289
11372
|
);
|
|
11290
11373
|
}
|
|
11374
|
+
function ConnectedSharePointAdminConsentPage({
|
|
11375
|
+
result: givenResult
|
|
11376
|
+
} = {}) {
|
|
11377
|
+
const queryResult = useMemo(() => new URLSearchParams(window.location.search).get("result"), []);
|
|
11378
|
+
const result = givenResult === void 0 ? queryResult : givenResult;
|
|
11379
|
+
const { apiBaseUrl } = useBlocksEnvironment().runtimeConfig;
|
|
11380
|
+
const consentUrl = `${apiBaseUrl}/v1/connectors/microsoft_sharepoint/admin-consent`;
|
|
11381
|
+
return /* @__PURE__ */ jsx(ConsentPage, { children: /* @__PURE__ */ jsxs(ConsentCard, { size: "md", children: [
|
|
11382
|
+
/* @__PURE__ */ jsx(
|
|
11383
|
+
ConsentHeader,
|
|
11384
|
+
{
|
|
11385
|
+
icon: /* @__PURE__ */ jsx(VendorLogo, { vendorKey: "microsoft_sharepoint", product: "sharepoint" }),
|
|
11386
|
+
title: "Approve ARBI for SharePoint access",
|
|
11387
|
+
children: "A member of your organization uses ARBI and wants to sync documents from SharePoint. Your Microsoft 365 organization requires an administrator to approve this once for the whole organization."
|
|
11388
|
+
}
|
|
11389
|
+
),
|
|
11390
|
+
result === "granted" && /* @__PURE__ */ jsx(ConsentNotice, { tone: "success", title: "Access approved \u2014 you\u2019re all set.", className: "mt-4", children: "People in your organization can now connect SharePoint from their own ARBI account. Nothing is synced until each user connects and chooses what to import." }),
|
|
11391
|
+
result === "declined" && /* @__PURE__ */ jsx(ConsentNotice, { tone: "warning", title: "The approval didn\u2019t complete.", className: "mt-4", children: "The request was declined or canceled on the Microsoft screen. You can try again below \u2014 you must sign in with a Microsoft 365 administrator account of your organization." }),
|
|
11392
|
+
/* @__PURE__ */ jsxs(ConsentSection, { title: "What you are approving", children: [
|
|
11393
|
+
/* @__PURE__ */ jsx(
|
|
11394
|
+
ConsentBulletList,
|
|
11395
|
+
{
|
|
11396
|
+
items: [
|
|
11397
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11398
|
+
/* @__PURE__ */ jsx(ConsentStrong, { children: "Read SharePoint sites and files" }),
|
|
11399
|
+
" \u2014 lets each user who connects their own account import documents from sites they already have access to. ARBI never gets more access than the user has."
|
|
11400
|
+
] }),
|
|
11401
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11402
|
+
/* @__PURE__ */ jsx(ConsentStrong, { children: "Sign users in and keep access" }),
|
|
11403
|
+
" \u2014 standard sign-in (openid, profile, email) and offline access so syncs keep working between sessions."
|
|
11404
|
+
] })
|
|
11405
|
+
]
|
|
11406
|
+
}
|
|
11407
|
+
),
|
|
11408
|
+
/* @__PURE__ */ jsx(ConsentText, { children: "Approving does not sync anything by itself and grants ARBI no standing access to your tenant. Each user still connects their own Microsoft account, and their tokens are end-to-end encrypted so ARBI\u2019s servers cannot read them at rest." }),
|
|
11409
|
+
/* @__PURE__ */ jsx(Button, { asChild: true, className: "w-full pointer-coarse:h-11", children: /* @__PURE__ */ jsx("a", { href: consentUrl, children: "Review and approve in Microsoft" }) }),
|
|
11410
|
+
/* @__PURE__ */ jsx(ConsentText, { variant: "footnote", children: "You\u2019ll sign in at login.microsoftonline.com and see Microsoft\u2019s own summary of these permissions before anything is granted." })
|
|
11411
|
+
] })
|
|
11412
|
+
] }) });
|
|
11413
|
+
}
|
|
11291
11414
|
var focus = null;
|
|
11292
11415
|
var listeners2 = /* @__PURE__ */ new Set();
|
|
11293
11416
|
function requestProjectBillingFocus(next) {
|
|
@@ -14056,8 +14179,13 @@ function useAutoRefreshPendingProjects() {
|
|
|
14056
14179
|
var QUOTA_EXCEEDED_MESSAGE = "This project's AI usage for this month is used up.";
|
|
14057
14180
|
var BOX_MEMBER_QUOTA_MESSAGE = "AI usage for this month is used up. Ask your Box admin to add more.";
|
|
14058
14181
|
var BOX_ADMIN_QUOTA_MESSAGE = "AI usage for this month is used up. Add more in the ARBI portal.";
|
|
14059
|
-
function ConnectedQuotaDialog({ info, onClose: close
|
|
14060
|
-
const { openProject } = useBlocksEnvironment();
|
|
14182
|
+
function ConnectedQuotaDialog({ info, onClose: close }) {
|
|
14183
|
+
const { openProject, runtimeConfig } = useBlocksEnvironment();
|
|
14184
|
+
const role = useBoxRole({ enabled: info !== null });
|
|
14185
|
+
const box = role.isBox ? {
|
|
14186
|
+
isAdmin: role.isBoxAdmin && !!runtimeConfig.licenceUrl,
|
|
14187
|
+
portalUrl: runtimeConfig.licenceUrl
|
|
14188
|
+
} : void 0;
|
|
14061
14189
|
const { data: projects, refetch: refetchProjects } = useProjects();
|
|
14062
14190
|
const [addAiUsageFor, setAddAiUsageFor] = useState(null);
|
|
14063
14191
|
const open = info !== null;
|
|
@@ -14250,7 +14378,7 @@ function ConnectedWelcomeDialog({
|
|
|
14250
14378
|
}
|
|
14251
14379
|
) });
|
|
14252
14380
|
}
|
|
14253
|
-
const
|
|
14381
|
+
const firstName2 = currentUser?.given_name;
|
|
14254
14382
|
const hasBalance = balance !== null;
|
|
14255
14383
|
const quotaItems = getQuotaItems(selectedProject.quotas);
|
|
14256
14384
|
const resetTs = aiUsageResetTimestamp(selectedProject);
|
|
@@ -14260,7 +14388,7 @@ function ConnectedWelcomeDialog({
|
|
|
14260
14388
|
{
|
|
14261
14389
|
open,
|
|
14262
14390
|
onClose: () => handleOpenChange(false),
|
|
14263
|
-
firstName,
|
|
14391
|
+
firstName: firstName2,
|
|
14264
14392
|
hasReward: hasBalance,
|
|
14265
14393
|
projectPicker: /* @__PURE__ */ jsx(
|
|
14266
14394
|
ProjectPicker,
|
|
@@ -14564,7 +14692,7 @@ function useConnectedWorkspaceList({
|
|
|
14564
14692
|
};
|
|
14565
14693
|
}
|
|
14566
14694
|
var WorkspaceTableView = lazy(
|
|
14567
|
-
() => import('../WorkspaceTableView-
|
|
14695
|
+
() => import('../WorkspaceTableView-S2PTTVHL.js').then((m) => ({ default: m.WorkspaceTableView }))
|
|
14568
14696
|
);
|
|
14569
14697
|
var WORKSPACES_TAB_ID = "workspaces";
|
|
14570
14698
|
var defaultRenderMember2 = (user, size) => {
|
|
@@ -14703,6 +14831,242 @@ function ConnectedWorkspaceList({
|
|
|
14703
14831
|
) }) }) })
|
|
14704
14832
|
] });
|
|
14705
14833
|
}
|
|
14834
|
+
function workspaceSummary(w) {
|
|
14835
|
+
return {
|
|
14836
|
+
id: w.external_id,
|
|
14837
|
+
name: w.name,
|
|
14838
|
+
description: w.description ?? void 0,
|
|
14839
|
+
isPublic: !!w.is_public,
|
|
14840
|
+
documentCount: workspaceDocumentCount(w),
|
|
14841
|
+
conversationCount: workspaceConversationCount(w),
|
|
14842
|
+
memberCount: w.users?.length ?? 0,
|
|
14843
|
+
filesMb: w.user_files_mb ?? 0,
|
|
14844
|
+
updatedAt: w.updated_at
|
|
14845
|
+
};
|
|
14846
|
+
}
|
|
14847
|
+
function distinctMembers(workspaces) {
|
|
14848
|
+
const byId = /* @__PURE__ */ new Map();
|
|
14849
|
+
for (const w of workspaces) {
|
|
14850
|
+
for (const member of w.users ?? []) {
|
|
14851
|
+
const user = member.user;
|
|
14852
|
+
const id = user?.external_id;
|
|
14853
|
+
if (!id || byId.has(id)) continue;
|
|
14854
|
+
const name = [user.given_name, user.family_name].filter(Boolean).join(" ").trim();
|
|
14855
|
+
byId.set(id, {
|
|
14856
|
+
id,
|
|
14857
|
+
name: name || user.email || "Unknown",
|
|
14858
|
+
email: user.email ?? "",
|
|
14859
|
+
role: member.role ?? "member",
|
|
14860
|
+
isAgent: Boolean(member.agent_ext_id) || isAgentAccount(user)
|
|
14861
|
+
});
|
|
14862
|
+
}
|
|
14863
|
+
}
|
|
14864
|
+
return [...byId.values()];
|
|
14865
|
+
}
|
|
14866
|
+
function buildProjectSummaries(projects, workspaces) {
|
|
14867
|
+
const byProject = /* @__PURE__ */ new Map();
|
|
14868
|
+
for (const w of workspaces ?? []) {
|
|
14869
|
+
const id = w.project_ext_id;
|
|
14870
|
+
if (!id) continue;
|
|
14871
|
+
byProject.set(id, [...byProject.get(id) ?? [], w]);
|
|
14872
|
+
}
|
|
14873
|
+
const summaries = (projects ?? []).map((p) => {
|
|
14874
|
+
const own = byProject.get(p.external_id) ?? [];
|
|
14875
|
+
const storage = p.quotas?.storage_gb;
|
|
14876
|
+
const aiUsage = p.quotas?.ai_usage;
|
|
14877
|
+
const stats = workspaceGroupStats(own);
|
|
14878
|
+
return {
|
|
14879
|
+
id: p.external_id,
|
|
14880
|
+
name: p.name,
|
|
14881
|
+
createdAt: p.created_at,
|
|
14882
|
+
subscription: p.subscription ?? "none",
|
|
14883
|
+
workspaces: own.map(workspaceSummary),
|
|
14884
|
+
workspaceCount: own.length,
|
|
14885
|
+
documentCount: stats.documents,
|
|
14886
|
+
conversationCount: stats.conversations,
|
|
14887
|
+
members: distinctMembers(own),
|
|
14888
|
+
memberCount: stats.members,
|
|
14889
|
+
filesMb: own.reduce((sum, w) => sum + (w.user_files_mb ?? 0), 0),
|
|
14890
|
+
storageUsedGb: storage?.used ?? 0,
|
|
14891
|
+
storageLimitGb: storage?.limit ?? 0,
|
|
14892
|
+
aiUsageUsed: aiUsage?.used ?? 0,
|
|
14893
|
+
aiUsageLimit: aiUsage?.limit ?? 0,
|
|
14894
|
+
client: p.client ?? null,
|
|
14895
|
+
clientRef: p.client_ref ?? null,
|
|
14896
|
+
stage: p.stage ?? null,
|
|
14897
|
+
leadUser: p.lead_user ?? null,
|
|
14898
|
+
budget: p.budget ?? null,
|
|
14899
|
+
fields: p.fields ?? {}
|
|
14900
|
+
};
|
|
14901
|
+
});
|
|
14902
|
+
const work = (s) => s.documentCount + s.conversationCount;
|
|
14903
|
+
return summaries.sort((a, b) => work(b) - work(a));
|
|
14904
|
+
}
|
|
14905
|
+
function useProjectSummaries() {
|
|
14906
|
+
const projects = useProjects();
|
|
14907
|
+
const workspaces = useWorkspaces();
|
|
14908
|
+
const summaries = useMemo(
|
|
14909
|
+
() => buildProjectSummaries(
|
|
14910
|
+
projects.data,
|
|
14911
|
+
workspaces.data
|
|
14912
|
+
),
|
|
14913
|
+
[projects.data, workspaces.data]
|
|
14914
|
+
);
|
|
14915
|
+
return {
|
|
14916
|
+
projects: summaries,
|
|
14917
|
+
isLoading: projects.isLoading || workspaces.isLoading,
|
|
14918
|
+
isError: projects.isError || workspaces.isError,
|
|
14919
|
+
error: projects.error ?? workspaces.error
|
|
14920
|
+
};
|
|
14921
|
+
}
|
|
14922
|
+
function useProjectSummary(projectId) {
|
|
14923
|
+
const { projects, isLoading, isError } = useProjectSummaries();
|
|
14924
|
+
const project = useMemo(() => projects.find((p) => p.id === projectId), [projects, projectId]);
|
|
14925
|
+
const usage = useProjectUsage(projectId, 0, { enabled: !!projectId });
|
|
14926
|
+
return { project, usage: usage.data, usageLoading: usage.isLoading, isLoading, isError };
|
|
14927
|
+
}
|
|
14928
|
+
function primaryProjectWorkspace(project) {
|
|
14929
|
+
const work = (w) => w.documentCount + w.conversationCount;
|
|
14930
|
+
return [...project.workspaces].sort((a, b) => work(b) - work(a))[0];
|
|
14931
|
+
}
|
|
14932
|
+
var DEFAULT_PROJECT_LIST_COLUMNS = [
|
|
14933
|
+
"name",
|
|
14934
|
+
"client",
|
|
14935
|
+
"stage",
|
|
14936
|
+
"documents",
|
|
14937
|
+
"conversations",
|
|
14938
|
+
"members",
|
|
14939
|
+
"storage"
|
|
14940
|
+
];
|
|
14941
|
+
var DEFAULT_PROJECTS_LIST_LABELS = {
|
|
14942
|
+
title: "Projects",
|
|
14943
|
+
description: "Every project: its client, stage, documents and the work on it.",
|
|
14944
|
+
searchPlaceholder: "Search projects and workspaces\u2026",
|
|
14945
|
+
columns: {
|
|
14946
|
+
name: "Project",
|
|
14947
|
+
client: "Client",
|
|
14948
|
+
stage: "Stage",
|
|
14949
|
+
documents: "Documents",
|
|
14950
|
+
conversations: "Threads",
|
|
14951
|
+
members: "Team",
|
|
14952
|
+
storage: "Storage"
|
|
14953
|
+
},
|
|
14954
|
+
opened: "opened",
|
|
14955
|
+
loadingTitle: "Loading projects\u2026",
|
|
14956
|
+
loadingDescription: "Fetching your projects.",
|
|
14957
|
+
emptyTitle: "No projects yet"
|
|
14958
|
+
};
|
|
14959
|
+
function formatStorageGb(gb3) {
|
|
14960
|
+
if (gb3 <= 0) return "\u2014";
|
|
14961
|
+
if (gb3 < 0.1) return `${Math.round(gb3 * 1024)} MB`;
|
|
14962
|
+
return `${gb3.toFixed(2)} GB`;
|
|
14963
|
+
}
|
|
14964
|
+
function ProjectsListPage({
|
|
14965
|
+
labels: given,
|
|
14966
|
+
columns: shown = DEFAULT_PROJECT_LIST_COLUMNS,
|
|
14967
|
+
actions,
|
|
14968
|
+
testId = "projects"
|
|
14969
|
+
}) {
|
|
14970
|
+
const labels = {
|
|
14971
|
+
...DEFAULT_PROJECTS_LIST_LABELS,
|
|
14972
|
+
...given,
|
|
14973
|
+
columns: { ...DEFAULT_PROJECTS_LIST_LABELS.columns, ...given?.columns }
|
|
14974
|
+
};
|
|
14975
|
+
const { openProject } = useBlocksEnvironment();
|
|
14976
|
+
const [search, setSearch] = useState("");
|
|
14977
|
+
const { projects, isLoading } = useProjectSummaries();
|
|
14978
|
+
const rows = useMemo(() => {
|
|
14979
|
+
const q = search.trim().toLowerCase();
|
|
14980
|
+
if (!q) return projects;
|
|
14981
|
+
return projects.filter(
|
|
14982
|
+
(p) => p.name.toLowerCase().includes(q) || p.workspaces.some((w) => w.name.toLowerCase().includes(q))
|
|
14983
|
+
);
|
|
14984
|
+
}, [search, projects]);
|
|
14985
|
+
const all = {
|
|
14986
|
+
name: {
|
|
14987
|
+
key: "name",
|
|
14988
|
+
header: labels.columns.name,
|
|
14989
|
+
render: (p) => /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
14990
|
+
/* @__PURE__ */ jsx("p", { className: "max-w-[22rem] truncate font-medium text-foreground", children: p.name }),
|
|
14991
|
+
/* @__PURE__ */ jsxs("p", { className: "truncate text-xs text-muted-foreground", children: [
|
|
14992
|
+
/* @__PURE__ */ jsx("span", { className: "font-mono", children: p.clientRef || p.id }),
|
|
14993
|
+
" \xB7 ",
|
|
14994
|
+
labels.opened,
|
|
14995
|
+
" ",
|
|
14996
|
+
fmtDate(p.createdAt)
|
|
14997
|
+
] })
|
|
14998
|
+
] })
|
|
14999
|
+
},
|
|
15000
|
+
client: {
|
|
15001
|
+
key: "client",
|
|
15002
|
+
header: labels.columns.client,
|
|
15003
|
+
render: (p) => /* @__PURE__ */ jsx("span", { className: "text-sm text-foreground", children: p.client || "\u2014" })
|
|
15004
|
+
},
|
|
15005
|
+
stage: {
|
|
15006
|
+
key: "stage",
|
|
15007
|
+
header: labels.columns.stage,
|
|
15008
|
+
render: (p) => p.stage ? /* @__PURE__ */ jsx(Badge, { variant: "secondary", children: p.stage }) : /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: "\u2014" })
|
|
15009
|
+
},
|
|
15010
|
+
documents: {
|
|
15011
|
+
key: "documents",
|
|
15012
|
+
header: labels.columns.documents,
|
|
15013
|
+
align: "right",
|
|
15014
|
+
render: (p) => /* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: p.documentCount.toLocaleString() })
|
|
15015
|
+
},
|
|
15016
|
+
conversations: {
|
|
15017
|
+
key: "conversations",
|
|
15018
|
+
header: labels.columns.conversations,
|
|
15019
|
+
align: "right",
|
|
15020
|
+
render: (p) => /* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: p.conversationCount.toLocaleString() })
|
|
15021
|
+
},
|
|
15022
|
+
members: {
|
|
15023
|
+
key: "team",
|
|
15024
|
+
header: labels.columns.members,
|
|
15025
|
+
render: (p) => p.memberCount ? /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 text-sm text-foreground", children: [
|
|
15026
|
+
/* @__PURE__ */ jsx(Users, { className: "size-3.5 text-muted-foreground" }),
|
|
15027
|
+
p.memberCount
|
|
15028
|
+
] }) : /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: "\u2014" })
|
|
15029
|
+
},
|
|
15030
|
+
storage: {
|
|
15031
|
+
key: "storage",
|
|
15032
|
+
header: labels.columns.storage,
|
|
15033
|
+
align: "right",
|
|
15034
|
+
render: (p) => /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: formatStorageGb(p.storageUsedGb) })
|
|
15035
|
+
}
|
|
15036
|
+
};
|
|
15037
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-6", "data-testid": `page-${testId}`, children: [
|
|
15038
|
+
/* @__PURE__ */ jsx(
|
|
15039
|
+
PageHeader,
|
|
15040
|
+
{
|
|
15041
|
+
eyebrow: labels.eyebrow,
|
|
15042
|
+
title: labels.title,
|
|
15043
|
+
description: labels.description,
|
|
15044
|
+
actions
|
|
15045
|
+
}
|
|
15046
|
+
),
|
|
15047
|
+
/* @__PURE__ */ jsx(
|
|
15048
|
+
Toolbar,
|
|
15049
|
+
{
|
|
15050
|
+
search,
|
|
15051
|
+
onSearch: setSearch,
|
|
15052
|
+
searchPlaceholder: labels.searchPlaceholder,
|
|
15053
|
+
testId: `${testId}-toolbar`
|
|
15054
|
+
}
|
|
15055
|
+
),
|
|
15056
|
+
/* @__PURE__ */ jsx(
|
|
15057
|
+
DataTable,
|
|
15058
|
+
{
|
|
15059
|
+
area: testId,
|
|
15060
|
+
columns: shown.map((c) => all[c]),
|
|
15061
|
+
rows,
|
|
15062
|
+
getRowId: (p) => p.id,
|
|
15063
|
+
onRowClick: (p) => openProject(p.id),
|
|
15064
|
+
emptyTitle: isLoading ? labels.loadingTitle : labels.emptyTitle,
|
|
15065
|
+
emptyDescription: isLoading ? labels.loadingDescription : labels.emptyDescription
|
|
15066
|
+
}
|
|
15067
|
+
)
|
|
15068
|
+
] });
|
|
15069
|
+
}
|
|
14706
15070
|
var PROJECTS_BASE_TAB_ID = "projects";
|
|
14707
15071
|
var isPaid = (p) => p.subscription === "active" || p.subscription === "past_due";
|
|
14708
15072
|
function useLocalProjectTabs() {
|
|
@@ -14722,6 +15086,13 @@ function useLocalProjectTabs() {
|
|
|
14722
15086
|
};
|
|
14723
15087
|
}
|
|
14724
15088
|
function ConnectedProjectsPanel({
|
|
15089
|
+
layout = "panel",
|
|
15090
|
+
page,
|
|
15091
|
+
...panel
|
|
15092
|
+
}) {
|
|
15093
|
+
return layout === "page" ? /* @__PURE__ */ jsx(ProjectsListPage, { ...page }) : /* @__PURE__ */ jsx(ProjectsPanel, { ...panel });
|
|
15094
|
+
}
|
|
15095
|
+
function ProjectsPanel({
|
|
14725
15096
|
tabs: hostTabs,
|
|
14726
15097
|
projectStorage,
|
|
14727
15098
|
footer,
|
|
@@ -14824,104 +15195,6 @@ function ConnectedProjectsPanel({
|
|
|
14824
15195
|
] });
|
|
14825
15196
|
return hostTabs ? panel : /* @__PURE__ */ jsx(ArbiHost, { config: localHost, children: panel });
|
|
14826
15197
|
}
|
|
14827
|
-
function workspaceSummary(w) {
|
|
14828
|
-
return {
|
|
14829
|
-
id: w.external_id,
|
|
14830
|
-
name: w.name,
|
|
14831
|
-
description: w.description ?? void 0,
|
|
14832
|
-
isPublic: !!w.is_public,
|
|
14833
|
-
documentCount: workspaceDocumentCount(w),
|
|
14834
|
-
conversationCount: workspaceConversationCount(w),
|
|
14835
|
-
memberCount: w.users?.length ?? 0,
|
|
14836
|
-
filesMb: w.user_files_mb ?? 0,
|
|
14837
|
-
updatedAt: w.updated_at
|
|
14838
|
-
};
|
|
14839
|
-
}
|
|
14840
|
-
function distinctMembers(workspaces) {
|
|
14841
|
-
const byId = /* @__PURE__ */ new Map();
|
|
14842
|
-
for (const w of workspaces) {
|
|
14843
|
-
for (const member of w.users ?? []) {
|
|
14844
|
-
const user = member.user;
|
|
14845
|
-
const id = user?.external_id;
|
|
14846
|
-
if (!id || byId.has(id)) continue;
|
|
14847
|
-
const name = [user.given_name, user.family_name].filter(Boolean).join(" ").trim();
|
|
14848
|
-
byId.set(id, {
|
|
14849
|
-
id,
|
|
14850
|
-
name: name || user.email || "Unknown",
|
|
14851
|
-
email: user.email ?? "",
|
|
14852
|
-
role: member.role ?? "member",
|
|
14853
|
-
isAgent: Boolean(member.agent_ext_id) || isAgentAccount(user)
|
|
14854
|
-
});
|
|
14855
|
-
}
|
|
14856
|
-
}
|
|
14857
|
-
return [...byId.values()];
|
|
14858
|
-
}
|
|
14859
|
-
function buildProjectSummaries(projects, workspaces) {
|
|
14860
|
-
const byProject = /* @__PURE__ */ new Map();
|
|
14861
|
-
for (const w of workspaces ?? []) {
|
|
14862
|
-
const id = w.project_ext_id;
|
|
14863
|
-
if (!id) continue;
|
|
14864
|
-
byProject.set(id, [...byProject.get(id) ?? [], w]);
|
|
14865
|
-
}
|
|
14866
|
-
const summaries = (projects ?? []).map((p) => {
|
|
14867
|
-
const own = byProject.get(p.external_id) ?? [];
|
|
14868
|
-
const storage = p.quotas?.storage_gb;
|
|
14869
|
-
const aiUsage = p.quotas?.ai_usage;
|
|
14870
|
-
const stats = workspaceGroupStats(own);
|
|
14871
|
-
return {
|
|
14872
|
-
id: p.external_id,
|
|
14873
|
-
name: p.name,
|
|
14874
|
-
createdAt: p.created_at,
|
|
14875
|
-
subscription: p.subscription ?? "none",
|
|
14876
|
-
workspaces: own.map(workspaceSummary),
|
|
14877
|
-
workspaceCount: own.length,
|
|
14878
|
-
documentCount: stats.documents,
|
|
14879
|
-
conversationCount: stats.conversations,
|
|
14880
|
-
members: distinctMembers(own),
|
|
14881
|
-
memberCount: stats.members,
|
|
14882
|
-
filesMb: own.reduce((sum, w) => sum + (w.user_files_mb ?? 0), 0),
|
|
14883
|
-
storageUsedGb: storage?.used ?? 0,
|
|
14884
|
-
storageLimitGb: storage?.limit ?? 0,
|
|
14885
|
-
aiUsageUsed: aiUsage?.used ?? 0,
|
|
14886
|
-
aiUsageLimit: aiUsage?.limit ?? 0,
|
|
14887
|
-
client: p.client ?? null,
|
|
14888
|
-
clientRef: p.client_ref ?? null,
|
|
14889
|
-
stage: p.stage ?? null,
|
|
14890
|
-
leadUser: p.lead_user ?? null,
|
|
14891
|
-
budget: p.budget ?? null,
|
|
14892
|
-
fields: p.fields ?? {}
|
|
14893
|
-
};
|
|
14894
|
-
});
|
|
14895
|
-
const work = (s) => s.documentCount + s.conversationCount;
|
|
14896
|
-
return summaries.sort((a, b) => work(b) - work(a));
|
|
14897
|
-
}
|
|
14898
|
-
function useProjectSummaries() {
|
|
14899
|
-
const projects = useProjects();
|
|
14900
|
-
const workspaces = useWorkspaces();
|
|
14901
|
-
const summaries = useMemo(
|
|
14902
|
-
() => buildProjectSummaries(
|
|
14903
|
-
projects.data,
|
|
14904
|
-
workspaces.data
|
|
14905
|
-
),
|
|
14906
|
-
[projects.data, workspaces.data]
|
|
14907
|
-
);
|
|
14908
|
-
return {
|
|
14909
|
-
projects: summaries,
|
|
14910
|
-
isLoading: projects.isLoading || workspaces.isLoading,
|
|
14911
|
-
isError: projects.isError || workspaces.isError,
|
|
14912
|
-
error: projects.error ?? workspaces.error
|
|
14913
|
-
};
|
|
14914
|
-
}
|
|
14915
|
-
function useProjectSummary(projectId) {
|
|
14916
|
-
const { projects, isLoading, isError } = useProjectSummaries();
|
|
14917
|
-
const project = useMemo(() => projects.find((p) => p.id === projectId), [projects, projectId]);
|
|
14918
|
-
const usage = useProjectUsage(projectId, 0, { enabled: !!projectId });
|
|
14919
|
-
return { project, usage: usage.data, usageLoading: usage.isLoading, isLoading, isError };
|
|
14920
|
-
}
|
|
14921
|
-
function primaryProjectWorkspace(project) {
|
|
14922
|
-
const work = (w) => w.documentCount + w.conversationCount;
|
|
14923
|
-
return [...project.workspaces].sort((a, b) => work(b) - work(a))[0];
|
|
14924
|
-
}
|
|
14925
15198
|
function RowsEditor({
|
|
14926
15199
|
label,
|
|
14927
15200
|
rows,
|
|
@@ -35822,15 +36095,74 @@ async function backUpOnSignup({
|
|
|
35822
36095
|
}
|
|
35823
36096
|
}
|
|
35824
36097
|
|
|
35825
|
-
// src/connection/auth/
|
|
36098
|
+
// src/connection/auth/sso-name.ts
|
|
36099
|
+
var clean = (value) => value?.trim() ?? "";
|
|
36100
|
+
function resolveSsoName(profile, preferred = {}, emailFallback) {
|
|
36101
|
+
const fullName = clean(profile.name);
|
|
36102
|
+
let given = clean(preferred.given_name) || clean(profile.given_name);
|
|
36103
|
+
let family = clean(preferred.family_name) || clean(profile.family_name);
|
|
36104
|
+
if (!given && fullName) {
|
|
36105
|
+
const surnameAtEnd = family && fullName.length > family.length && fullName.toLowerCase().endsWith(family.toLowerCase());
|
|
36106
|
+
given = surnameAtEnd ? fullName.slice(0, fullName.length - family.length).trim() : fullName.split(/\s+/)[0];
|
|
36107
|
+
}
|
|
36108
|
+
if (!family && given && fullName.toLowerCase().startsWith(given.toLowerCase())) {
|
|
36109
|
+
family = fullName.slice(given.length).trim();
|
|
36110
|
+
}
|
|
36111
|
+
if (!given && emailFallback) given = emailFallback.split("@")[0];
|
|
36112
|
+
return { given_name: given, family_name: family };
|
|
36113
|
+
}
|
|
36114
|
+
|
|
36115
|
+
// src/connection/auth/sso-sign-in.ts
|
|
36116
|
+
function ssoAccountStatus(arbi, token, user) {
|
|
36117
|
+
return arbi.sso.status({ token, email: user.email, picture: user.picture });
|
|
36118
|
+
}
|
|
36119
|
+
async function completeSsoSignIn(arbi, { token, user, status, password, saveRecoveryKey = true }) {
|
|
36120
|
+
const email = user.email;
|
|
36121
|
+
if (status.status === "new_user") {
|
|
36122
|
+
const { given_name: firstName2, family_name: lastName } = resolveSsoName(user, status, email);
|
|
36123
|
+
const { signingPrivateKey } = await arbi.sso.register({
|
|
36124
|
+
token,
|
|
36125
|
+
email,
|
|
36126
|
+
password,
|
|
36127
|
+
firstName: firstName2,
|
|
36128
|
+
lastName,
|
|
36129
|
+
picture: user.picture
|
|
36130
|
+
});
|
|
36131
|
+
await backUpOnSignup({
|
|
36132
|
+
email,
|
|
36133
|
+
password,
|
|
36134
|
+
signingPrivateKey,
|
|
36135
|
+
saveRecoveryKey,
|
|
36136
|
+
auth0Sub: user.sub
|
|
36137
|
+
});
|
|
36138
|
+
const login2 = await arbi.sso.login({
|
|
36139
|
+
token,
|
|
36140
|
+
email,
|
|
36141
|
+
password,
|
|
36142
|
+
profile: { ...resolveSsoName(user, status), picture: user.picture ?? null }
|
|
36143
|
+
});
|
|
36144
|
+
return { login: login2, registered: true, linked: false };
|
|
36145
|
+
}
|
|
36146
|
+
const linked = status.status === "local_exists";
|
|
36147
|
+
const signIn = linked ? arbi.sso.link : arbi.sso.login;
|
|
36148
|
+
const login = await signIn({ token, email, password });
|
|
36149
|
+
return { login: login ?? void 0, registered: false, linked };
|
|
36150
|
+
}
|
|
35826
36151
|
var BAD_CREDENTIALS = "This username/password combination is not valid. Please double-check your credentials and try again.";
|
|
35827
36152
|
function useLoginActions({
|
|
35828
36153
|
formState,
|
|
35829
|
-
formActions
|
|
36154
|
+
formActions,
|
|
36155
|
+
onError
|
|
35830
36156
|
}) {
|
|
35831
36157
|
const arbi = useArbi();
|
|
36158
|
+
const signInLayer = useOptionalConnection();
|
|
35832
36159
|
const sso = useSsoSignIn();
|
|
35833
|
-
const
|
|
36160
|
+
const environment = useBlocksEnvironment();
|
|
36161
|
+
const environmentNotify = environment.notify;
|
|
36162
|
+
const notify17 = useCallback(
|
|
36163
|
+
(...args) => args[1] === "error" && onError && typeof args[0] === "string" ? onError(args[0]) : environmentNotify(...args),
|
|
36164
|
+
[environmentNotify, onError]
|
|
36165
|
+
);
|
|
35834
36166
|
const { passwordRules, onRegistered, onUnlockedOffline } = useAuthPages();
|
|
35835
36167
|
const [isAuthenticating, setIsAuthenticating] = useState(false);
|
|
35836
36168
|
const [isRequestingCode, setIsRequestingCode] = useState(false);
|
|
@@ -35838,7 +36170,7 @@ function useLoginActions({
|
|
|
35838
36170
|
email,
|
|
35839
36171
|
password,
|
|
35840
36172
|
confirmPassword,
|
|
35841
|
-
firstName,
|
|
36173
|
+
firstName: firstName2,
|
|
35842
36174
|
lastName,
|
|
35843
36175
|
verificationCode,
|
|
35844
36176
|
cooldownSeconds
|
|
@@ -35890,14 +36222,16 @@ function useLoginActions({
|
|
|
35890
36222
|
const handleLocalLogin = useCallback(
|
|
35891
36223
|
async (opts) => {
|
|
35892
36224
|
arbi.session?.setSsoMode(false);
|
|
35893
|
-
|
|
36225
|
+
const loginEmail = opts?.credentials?.email ?? email;
|
|
36226
|
+
const loginPassword = opts?.credentials?.password ?? password;
|
|
36227
|
+
if (!loginPassword) {
|
|
35894
36228
|
notify17("Please fill in all required fields.", "error");
|
|
35895
36229
|
return;
|
|
35896
36230
|
}
|
|
35897
|
-
if (!validateEmailWithError(
|
|
36231
|
+
if (!validateEmailWithError(loginEmail)) return;
|
|
35898
36232
|
if (typeof navigator !== "undefined" && !navigator.onLine) {
|
|
35899
36233
|
try {
|
|
35900
|
-
await arbi.unlock(
|
|
36234
|
+
await arbi.unlock(loginEmail, loginPassword);
|
|
35901
36235
|
onUnlockedOffline?.();
|
|
35902
36236
|
} catch (err) {
|
|
35903
36237
|
notify17(
|
|
@@ -35907,10 +36241,15 @@ function useLoginActions({
|
|
|
35907
36241
|
}
|
|
35908
36242
|
return;
|
|
35909
36243
|
}
|
|
36244
|
+
if (signInLayer && !signInLayer.apiConfigured) {
|
|
36245
|
+
await signInLayer.login(loginEmail, loginPassword);
|
|
36246
|
+
return;
|
|
36247
|
+
}
|
|
35910
36248
|
setIsAuthenticating(true);
|
|
35911
36249
|
try {
|
|
35912
|
-
const login = await arbi.login(
|
|
36250
|
+
const login = await arbi.login(loginEmail, loginPassword);
|
|
35913
36251
|
if (opts?.isFreshRegistration) onRegistered?.(login);
|
|
36252
|
+
return login;
|
|
35914
36253
|
} catch (error) {
|
|
35915
36254
|
setIsAuthenticating(false);
|
|
35916
36255
|
console.error("Login error:", error);
|
|
@@ -35922,12 +36261,21 @@ function useLoginActions({
|
|
|
35922
36261
|
);
|
|
35923
36262
|
}
|
|
35924
36263
|
},
|
|
35925
|
-
[
|
|
36264
|
+
[
|
|
36265
|
+
arbi,
|
|
36266
|
+
signInLayer,
|
|
36267
|
+
email,
|
|
36268
|
+
password,
|
|
36269
|
+
validateEmailWithError,
|
|
36270
|
+
notify17,
|
|
36271
|
+
onRegistered,
|
|
36272
|
+
onUnlockedOffline
|
|
36273
|
+
]
|
|
35926
36274
|
);
|
|
35927
36275
|
const handleRegister = useCallback(
|
|
35928
36276
|
async (saveRecoveryKey = true) => {
|
|
35929
36277
|
arbi.session?.setSsoMode(false);
|
|
35930
|
-
if (!password || !confirmPassword || !
|
|
36278
|
+
if (!password || !confirmPassword || !firstName2 || !lastName || !verificationCode) {
|
|
35931
36279
|
notify17("Please fill in all required fields.", "error");
|
|
35932
36280
|
return;
|
|
35933
36281
|
}
|
|
@@ -35947,7 +36295,7 @@ function useLoginActions({
|
|
|
35947
36295
|
email,
|
|
35948
36296
|
password,
|
|
35949
36297
|
verificationCode: verificationCode.trim(),
|
|
35950
|
-
firstName,
|
|
36298
|
+
firstName: firstName2,
|
|
35951
36299
|
lastName
|
|
35952
36300
|
});
|
|
35953
36301
|
await backUpOnSignup({ email, password, signingPrivateKey, saveRecoveryKey });
|
|
@@ -35963,7 +36311,7 @@ function useLoginActions({
|
|
|
35963
36311
|
email,
|
|
35964
36312
|
password,
|
|
35965
36313
|
confirmPassword,
|
|
35966
|
-
|
|
36314
|
+
firstName2,
|
|
35967
36315
|
lastName,
|
|
35968
36316
|
verificationCode,
|
|
35969
36317
|
validateEmailWithError,
|
|
@@ -35987,7 +36335,7 @@ function useLoginForm() {
|
|
|
35987
36335
|
const [email, setEmail] = useState("");
|
|
35988
36336
|
const [password, setPassword] = useState("");
|
|
35989
36337
|
const [confirmPassword, setConfirmPassword] = useState("");
|
|
35990
|
-
const [
|
|
36338
|
+
const [firstName2, setFirstName] = useState("");
|
|
35991
36339
|
const [lastName, setLastName] = useState("");
|
|
35992
36340
|
const [verificationCode, setVerificationCode] = useState("");
|
|
35993
36341
|
const [verificationSent, setVerificationSent] = useState(false);
|
|
@@ -36123,7 +36471,7 @@ function useLoginForm() {
|
|
|
36123
36471
|
email,
|
|
36124
36472
|
password,
|
|
36125
36473
|
confirmPassword,
|
|
36126
|
-
firstName,
|
|
36474
|
+
firstName: firstName2,
|
|
36127
36475
|
lastName,
|
|
36128
36476
|
verificationCode,
|
|
36129
36477
|
verificationSent,
|
|
@@ -36159,36 +36507,242 @@ function useLoginForm() {
|
|
|
36159
36507
|
};
|
|
36160
36508
|
return { ...state, ...actions };
|
|
36161
36509
|
}
|
|
36162
|
-
function useRegisterSubmitState(isRegistering, isPending, password, confirmPassword, email,
|
|
36510
|
+
function useRegisterSubmitState(isRegistering, isPending, password, confirmPassword, email, firstName2, lastName, verificationCode, isPasswordValid) {
|
|
36163
36511
|
const isDisabled = useMemo(() => {
|
|
36164
36512
|
if (!isRegistering) return false;
|
|
36165
|
-
return isPending || !isPasswordValid(password) || password !== confirmPassword || !email || !
|
|
36513
|
+
return isPending || !isPasswordValid(password) || password !== confirmPassword || !email || !firstName2 || !lastName || !verificationCode;
|
|
36166
36514
|
}, [
|
|
36167
36515
|
isRegistering,
|
|
36168
36516
|
isPending,
|
|
36169
36517
|
password,
|
|
36170
36518
|
confirmPassword,
|
|
36171
36519
|
email,
|
|
36172
|
-
|
|
36520
|
+
firstName2,
|
|
36173
36521
|
lastName,
|
|
36174
36522
|
verificationCode,
|
|
36175
36523
|
isPasswordValid
|
|
36176
36524
|
]);
|
|
36177
36525
|
const isDefault = useMemo(() => {
|
|
36178
36526
|
if (!isRegistering) return false;
|
|
36179
|
-
return email && password && confirmPassword &&
|
|
36527
|
+
return email && password && confirmPassword && firstName2 && lastName && verificationCode && isPasswordValid(password) && password === confirmPassword;
|
|
36180
36528
|
}, [
|
|
36181
36529
|
isRegistering,
|
|
36182
36530
|
email,
|
|
36183
36531
|
password,
|
|
36184
36532
|
confirmPassword,
|
|
36185
|
-
|
|
36533
|
+
firstName2,
|
|
36186
36534
|
lastName,
|
|
36187
36535
|
verificationCode,
|
|
36188
36536
|
isPasswordValid
|
|
36189
36537
|
]);
|
|
36190
36538
|
return { isDisabled, isDefault };
|
|
36191
36539
|
}
|
|
36540
|
+
var firstName = (user, fallback) => user?.given_name || fallback.split("@")[0];
|
|
36541
|
+
function CompactLogin({
|
|
36542
|
+
onSsoSignIn,
|
|
36543
|
+
onSignedIn,
|
|
36544
|
+
appName = "ARBI",
|
|
36545
|
+
ssoName = appName
|
|
36546
|
+
}) {
|
|
36547
|
+
const arbi = useArbi();
|
|
36548
|
+
const auth = useAuthPages();
|
|
36549
|
+
const { notify: notify17 } = useBlocksEnvironment();
|
|
36550
|
+
const isSsoOnly = !!auth.ssoOnly;
|
|
36551
|
+
const [error, setError] = useState(null);
|
|
36552
|
+
const formState = useLoginForm();
|
|
36553
|
+
const { email, password, setEmail, setPassword } = formState;
|
|
36554
|
+
const { isAuthenticating, handleLocalLogin } = useLoginActions({
|
|
36555
|
+
formState,
|
|
36556
|
+
formActions: formState,
|
|
36557
|
+
onError: setError
|
|
36558
|
+
});
|
|
36559
|
+
const [sso, setSso] = useState(null);
|
|
36560
|
+
const [masterPassword, setMasterPassword] = useState("");
|
|
36561
|
+
const signInLocally = async (e) => {
|
|
36562
|
+
e.preventDefault();
|
|
36563
|
+
setError(null);
|
|
36564
|
+
const login = await handleLocalLogin();
|
|
36565
|
+
if (login) onSignedIn?.(firstName(login.response?.user, email));
|
|
36566
|
+
};
|
|
36567
|
+
const finishSso = async () => {
|
|
36568
|
+
if (!sso?.user.email) {
|
|
36569
|
+
setError("User email not available");
|
|
36570
|
+
return;
|
|
36571
|
+
}
|
|
36572
|
+
try {
|
|
36573
|
+
const status = await ssoAccountStatus(arbi, sso.accessToken, sso.user);
|
|
36574
|
+
const { login } = await completeSsoSignIn(arbi, {
|
|
36575
|
+
token: sso.accessToken,
|
|
36576
|
+
user: sso.user,
|
|
36577
|
+
status,
|
|
36578
|
+
password: masterPassword
|
|
36579
|
+
});
|
|
36580
|
+
const name = login?.response?.user.given_name ?? sso.user.given_name ?? sso.user.name;
|
|
36581
|
+
setError(null);
|
|
36582
|
+
setSso(null);
|
|
36583
|
+
setMasterPassword("");
|
|
36584
|
+
const shown = name ?? sso.user.email.split("@")[0];
|
|
36585
|
+
notify17(`Welcome, ${shown}!`, "success");
|
|
36586
|
+
onSignedIn?.(shown);
|
|
36587
|
+
} catch (err) {
|
|
36588
|
+
console.error("[SSO] Error during authentication:", err);
|
|
36589
|
+
setError(parseAuthError(err, { defaultMessage: "Authentication failed. Please try again." }));
|
|
36590
|
+
}
|
|
36591
|
+
};
|
|
36592
|
+
const startSso = async () => {
|
|
36593
|
+
if (!onSsoSignIn) return;
|
|
36594
|
+
try {
|
|
36595
|
+
const result = await onSsoSignIn();
|
|
36596
|
+
if (result) setSso(result);
|
|
36597
|
+
} catch (err) {
|
|
36598
|
+
setError(err instanceof Error ? err.message : "Authentication failed. Please try again.");
|
|
36599
|
+
}
|
|
36600
|
+
};
|
|
36601
|
+
const cancelSso = () => {
|
|
36602
|
+
setSso(null);
|
|
36603
|
+
setMasterPassword("");
|
|
36604
|
+
setError(null);
|
|
36605
|
+
};
|
|
36606
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-4", "data-testid": "embedded-auth", children: [
|
|
36607
|
+
error && /* @__PURE__ */ jsx(
|
|
36608
|
+
"div",
|
|
36609
|
+
{
|
|
36610
|
+
className: "bg-destructive/10 text-destructive p-3 rounded-md",
|
|
36611
|
+
"data-testid": "embedded-auth-error",
|
|
36612
|
+
children: /* @__PURE__ */ jsx("p", { className: "text-sm", children: error })
|
|
36613
|
+
}
|
|
36614
|
+
),
|
|
36615
|
+
sso ? /* @__PURE__ */ jsxs(
|
|
36616
|
+
"form",
|
|
36617
|
+
{
|
|
36618
|
+
onSubmit: (e) => {
|
|
36619
|
+
e.preventDefault();
|
|
36620
|
+
if (masterPassword) void finishSso();
|
|
36621
|
+
},
|
|
36622
|
+
className: "space-y-3",
|
|
36623
|
+
children: [
|
|
36624
|
+
/* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground", children: [
|
|
36625
|
+
"Enter your ",
|
|
36626
|
+
appName,
|
|
36627
|
+
" ",
|
|
36628
|
+
/* @__PURE__ */ jsx("strong", { children: "master password" }),
|
|
36629
|
+
" \u2014 the encryption passphrase you set when you first registered, not your ",
|
|
36630
|
+
ssoName,
|
|
36631
|
+
" sign-in password."
|
|
36632
|
+
] }),
|
|
36633
|
+
/* @__PURE__ */ jsx(
|
|
36634
|
+
Input,
|
|
36635
|
+
{
|
|
36636
|
+
type: "password",
|
|
36637
|
+
placeholder: "Enter master password",
|
|
36638
|
+
value: masterPassword,
|
|
36639
|
+
onChange: (e) => setMasterPassword(e.target.value),
|
|
36640
|
+
autoFocus: true,
|
|
36641
|
+
"data-testid": "embedded-auth-password-input"
|
|
36642
|
+
}
|
|
36643
|
+
),
|
|
36644
|
+
/* @__PURE__ */ jsx(
|
|
36645
|
+
Button,
|
|
36646
|
+
{
|
|
36647
|
+
type: "submit",
|
|
36648
|
+
className: "w-full",
|
|
36649
|
+
disabled: !masterPassword,
|
|
36650
|
+
"data-testid": "embedded-auth-continue-button",
|
|
36651
|
+
children: "Continue"
|
|
36652
|
+
}
|
|
36653
|
+
),
|
|
36654
|
+
/* @__PURE__ */ jsx(
|
|
36655
|
+
Button,
|
|
36656
|
+
{
|
|
36657
|
+
type: "button",
|
|
36658
|
+
variant: "outline",
|
|
36659
|
+
className: "w-full",
|
|
36660
|
+
onClick: cancelSso,
|
|
36661
|
+
"data-testid": "embedded-auth-cancel-button",
|
|
36662
|
+
children: "Cancel"
|
|
36663
|
+
}
|
|
36664
|
+
)
|
|
36665
|
+
]
|
|
36666
|
+
}
|
|
36667
|
+
) : isSsoOnly ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
36668
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Please sign in with your organization account." }),
|
|
36669
|
+
/* @__PURE__ */ jsxs(
|
|
36670
|
+
Button,
|
|
36671
|
+
{
|
|
36672
|
+
onClick: () => void startSso(),
|
|
36673
|
+
className: "w-full",
|
|
36674
|
+
"data-testid": "embedded-auth-sso-button",
|
|
36675
|
+
children: [
|
|
36676
|
+
/* @__PURE__ */ jsx(LogIn, { className: "mr-2 h-4 w-4" }),
|
|
36677
|
+
"Sign in with ",
|
|
36678
|
+
ssoName
|
|
36679
|
+
]
|
|
36680
|
+
}
|
|
36681
|
+
)
|
|
36682
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
36683
|
+
/* @__PURE__ */ jsxs("form", { onSubmit: (e) => void signInLocally(e), className: "space-y-3", children: [
|
|
36684
|
+
/* @__PURE__ */ jsx(
|
|
36685
|
+
Input,
|
|
36686
|
+
{
|
|
36687
|
+
type: "email",
|
|
36688
|
+
placeholder: "Email",
|
|
36689
|
+
value: email,
|
|
36690
|
+
onChange: (e) => setEmail(e.target.value),
|
|
36691
|
+
required: true,
|
|
36692
|
+
disabled: isAuthenticating,
|
|
36693
|
+
"data-testid": "embedded-auth-email-input"
|
|
36694
|
+
}
|
|
36695
|
+
),
|
|
36696
|
+
/* @__PURE__ */ jsx(
|
|
36697
|
+
Input,
|
|
36698
|
+
{
|
|
36699
|
+
type: "password",
|
|
36700
|
+
placeholder: "Password",
|
|
36701
|
+
value: password,
|
|
36702
|
+
onChange: (e) => setPassword(e.target.value),
|
|
36703
|
+
required: true,
|
|
36704
|
+
disabled: isAuthenticating,
|
|
36705
|
+
"data-testid": "embedded-auth-password-input"
|
|
36706
|
+
}
|
|
36707
|
+
),
|
|
36708
|
+
/* @__PURE__ */ jsx(
|
|
36709
|
+
Button,
|
|
36710
|
+
{
|
|
36711
|
+
type: "submit",
|
|
36712
|
+
className: "w-full",
|
|
36713
|
+
disabled: isAuthenticating,
|
|
36714
|
+
"data-testid": "embedded-auth-signin-button",
|
|
36715
|
+
children: isAuthenticating ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
36716
|
+
/* @__PURE__ */ jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
|
|
36717
|
+
"Signing in..."
|
|
36718
|
+
] }) : "Sign In"
|
|
36719
|
+
}
|
|
36720
|
+
)
|
|
36721
|
+
] }),
|
|
36722
|
+
onSsoSignIn && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
36723
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
36724
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center", children: /* @__PURE__ */ jsx("span", { className: "w-full border-t" }) }),
|
|
36725
|
+
/* @__PURE__ */ jsx("div", { className: "relative flex justify-center text-sm uppercase", children: /* @__PURE__ */ jsx("span", { className: "bg-background px-2 text-muted-foreground", children: "Or" }) })
|
|
36726
|
+
] }),
|
|
36727
|
+
/* @__PURE__ */ jsxs(
|
|
36728
|
+
Button,
|
|
36729
|
+
{
|
|
36730
|
+
onClick: () => void startSso(),
|
|
36731
|
+
className: "w-full",
|
|
36732
|
+
variant: "outline",
|
|
36733
|
+
"data-testid": "embedded-auth-sso-option-button",
|
|
36734
|
+
children: [
|
|
36735
|
+
/* @__PURE__ */ jsx(LogIn, { className: "mr-2 h-4 w-4" }),
|
|
36736
|
+
"Sign in with ",
|
|
36737
|
+
ssoName,
|
|
36738
|
+
" (SSO)"
|
|
36739
|
+
]
|
|
36740
|
+
}
|
|
36741
|
+
)
|
|
36742
|
+
] })
|
|
36743
|
+
] })
|
|
36744
|
+
] });
|
|
36745
|
+
}
|
|
36192
36746
|
function useSsoVerificationRedirect() {
|
|
36193
36747
|
const sso = useSsoSignIn();
|
|
36194
36748
|
const { notify: notify17 } = useBlocksEnvironment();
|
|
@@ -36226,11 +36780,18 @@ function warmSodium() {
|
|
|
36226
36780
|
if (typeof window.requestIdleCallback === "function") window.requestIdleCallback(run);
|
|
36227
36781
|
else window.setTimeout(run, 200);
|
|
36228
36782
|
}
|
|
36229
|
-
function ConnectedLoginPage(
|
|
36783
|
+
function ConnectedLoginPage({
|
|
36784
|
+
layout = "page",
|
|
36785
|
+
...compact
|
|
36786
|
+
} = {}) {
|
|
36787
|
+
return layout === "compact" ? /* @__PURE__ */ jsx(CompactLogin, { ...compact }) : /* @__PURE__ */ jsx(LoginPage, {});
|
|
36788
|
+
}
|
|
36789
|
+
function LoginPage() {
|
|
36230
36790
|
const sso = useSsoSignIn();
|
|
36231
36791
|
const auth = useAuthPages();
|
|
36232
36792
|
const { notify: notify17 } = useBlocksEnvironment();
|
|
36233
36793
|
const isSsoOnly = !!auth.ssoOnly;
|
|
36794
|
+
const allowRegistration = auth.allowRegistration ?? true;
|
|
36234
36795
|
const isOnline = useIsOnline();
|
|
36235
36796
|
const passwordRules = auth.passwordRules;
|
|
36236
36797
|
useSsoVerificationRedirect();
|
|
@@ -36240,7 +36801,7 @@ function ConnectedLoginPage() {
|
|
|
36240
36801
|
email,
|
|
36241
36802
|
password,
|
|
36242
36803
|
confirmPassword,
|
|
36243
|
-
firstName,
|
|
36804
|
+
firstName: firstName2,
|
|
36244
36805
|
lastName,
|
|
36245
36806
|
verificationCode,
|
|
36246
36807
|
verificationSent,
|
|
@@ -36281,7 +36842,7 @@ function ConnectedLoginPage() {
|
|
|
36281
36842
|
password,
|
|
36282
36843
|
confirmPassword,
|
|
36283
36844
|
email,
|
|
36284
|
-
|
|
36845
|
+
firstName2,
|
|
36285
36846
|
lastName,
|
|
36286
36847
|
verificationCode,
|
|
36287
36848
|
passwordRules.isValid
|
|
@@ -36291,13 +36852,21 @@ function ConnectedLoginPage() {
|
|
|
36291
36852
|
auth.onIntent?.();
|
|
36292
36853
|
};
|
|
36293
36854
|
useEffect(() => {
|
|
36294
|
-
if (!isOnline) setIsRegistering(false);
|
|
36295
|
-
}, [isOnline, setIsRegistering]);
|
|
36855
|
+
if (!isOnline || !allowRegistration) setIsRegistering(false);
|
|
36856
|
+
}, [isOnline, allowRegistration, setIsRegistering]);
|
|
36857
|
+
useFragmentCredentials({
|
|
36858
|
+
enabled: !!auth.fragmentSignIn,
|
|
36859
|
+
onCredentials: ({ email: linkEmail, password: linkPassword, next }) => {
|
|
36860
|
+
setEmail(linkEmail);
|
|
36861
|
+
if (next) auth.onReturnPath?.(next);
|
|
36862
|
+
void handleLocalLogin({ credentials: { email: linkEmail, password: linkPassword } });
|
|
36863
|
+
}
|
|
36864
|
+
});
|
|
36296
36865
|
const autoRequestFiredRef = useRef(false);
|
|
36297
36866
|
const emailInputRef = useRef(null);
|
|
36298
36867
|
useEffect(() => {
|
|
36299
36868
|
if (!pendingAutoRequest || autoRequestFiredRef.current) return;
|
|
36300
|
-
if (isSsoOnly || !isOnline) return;
|
|
36869
|
+
if (isSsoOnly || !isOnline || !allowRegistration) return;
|
|
36301
36870
|
autoRequestFiredRef.current = true;
|
|
36302
36871
|
setPendingAutoRequest(false);
|
|
36303
36872
|
void handleRequestVerificationCode();
|
|
@@ -36305,6 +36874,7 @@ function ConnectedLoginPage() {
|
|
|
36305
36874
|
pendingAutoRequest,
|
|
36306
36875
|
isSsoOnly,
|
|
36307
36876
|
isOnline,
|
|
36877
|
+
allowRegistration,
|
|
36308
36878
|
setPendingAutoRequest,
|
|
36309
36879
|
handleRequestVerificationCode
|
|
36310
36880
|
]);
|
|
@@ -36394,12 +36964,18 @@ function ConnectedLoginPage() {
|
|
|
36394
36964
|
{
|
|
36395
36965
|
brand: auth.brand,
|
|
36396
36966
|
corner: auth.corner,
|
|
36397
|
-
headerRight:
|
|
36967
|
+
headerRight: isSsoOnly ? void 0 : !isOnline ? offlineIndicator : allowRegistration ? loginRegisterToggle : void 0,
|
|
36398
36968
|
aside,
|
|
36399
36969
|
children: [
|
|
36400
36970
|
auth.banner,
|
|
36401
36971
|
!isSsoOnly && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
36402
|
-
/* @__PURE__ */ jsx(
|
|
36972
|
+
/* @__PURE__ */ jsx(
|
|
36973
|
+
AuthHeading,
|
|
36974
|
+
{
|
|
36975
|
+
title: isRegistering ? "Create your account" : auth.heading?.title ?? "Welcome back",
|
|
36976
|
+
description: isRegistering ? void 0 : auth.heading?.description
|
|
36977
|
+
}
|
|
36978
|
+
),
|
|
36403
36979
|
/* @__PURE__ */ jsxs("div", { "data-testid": "login-form-container", children: [
|
|
36404
36980
|
/* @__PURE__ */ jsxs(
|
|
36405
36981
|
"form",
|
|
@@ -36414,7 +36990,7 @@ function ConnectedLoginPage() {
|
|
|
36414
36990
|
AuthField,
|
|
36415
36991
|
{
|
|
36416
36992
|
htmlFor: "email",
|
|
36417
|
-
label: "Email",
|
|
36993
|
+
label: isRegistering ? "Email" : auth.emailLabel ?? "Email",
|
|
36418
36994
|
required: true,
|
|
36419
36995
|
labelAction: isRegistering && verificationSent ? /* @__PURE__ */ jsx(AuthLink, { onClick: clearForm, "data-testid": "clear-button", children: "Clear form" }) : void 0,
|
|
36420
36996
|
trailing: (
|
|
@@ -36520,7 +37096,7 @@ function ConnectedLoginPage() {
|
|
|
36520
37096
|
{
|
|
36521
37097
|
type: "text",
|
|
36522
37098
|
placeholder: "",
|
|
36523
|
-
value:
|
|
37099
|
+
value: firstName2,
|
|
36524
37100
|
onChange: (e) => setFirstName(e.target.value),
|
|
36525
37101
|
"data-testid": "firstname-input",
|
|
36526
37102
|
name: "firstName",
|
|
@@ -36699,6 +37275,46 @@ function ConnectedLoginPage() {
|
|
|
36699
37275
|
}
|
|
36700
37276
|
);
|
|
36701
37277
|
}
|
|
37278
|
+
|
|
37279
|
+
// src/connection/auth/sso-popup.ts
|
|
37280
|
+
function openSsoPopup(url, { features = "width=600,height=700" } = {}) {
|
|
37281
|
+
return new Promise((resolve, reject) => {
|
|
37282
|
+
const opened = window.open(url, "auth", features);
|
|
37283
|
+
if (!opened) {
|
|
37284
|
+
resolve(null);
|
|
37285
|
+
return;
|
|
37286
|
+
}
|
|
37287
|
+
const popup = opened;
|
|
37288
|
+
const closedPoll = setInterval(() => {
|
|
37289
|
+
if (popup.closed) {
|
|
37290
|
+
done();
|
|
37291
|
+
resolve(null);
|
|
37292
|
+
}
|
|
37293
|
+
}, 500);
|
|
37294
|
+
const done = () => {
|
|
37295
|
+
window.removeEventListener("message", onMessage);
|
|
37296
|
+
clearInterval(closedPoll);
|
|
37297
|
+
};
|
|
37298
|
+
function onMessage(event) {
|
|
37299
|
+
if (event.origin !== window.location.origin) return;
|
|
37300
|
+
const data = event.data;
|
|
37301
|
+
if (data?.error) {
|
|
37302
|
+
done();
|
|
37303
|
+
reject(new Error(data.error));
|
|
37304
|
+
return;
|
|
37305
|
+
}
|
|
37306
|
+
if (!data?.accessToken) return;
|
|
37307
|
+
done();
|
|
37308
|
+
if (!popup.closed) popup.close();
|
|
37309
|
+
if (!data.user) {
|
|
37310
|
+
reject(new Error("Invalid authentication response"));
|
|
37311
|
+
return;
|
|
37312
|
+
}
|
|
37313
|
+
resolve({ accessToken: data.accessToken, user: data.user });
|
|
37314
|
+
}
|
|
37315
|
+
window.addEventListener("message", onMessage);
|
|
37316
|
+
});
|
|
37317
|
+
}
|
|
36702
37318
|
var MAX_RESEND_WARNING_THRESHOLD = 3;
|
|
36703
37319
|
var MAX_RESEND_BLOCK_THRESHOLD = 6;
|
|
36704
37320
|
var RATE_LIMIT_COOLDOWN_MS = 6e4;
|
|
@@ -36772,23 +37388,6 @@ function SsoResendVerificationButton({
|
|
|
36772
37388
|
}
|
|
36773
37389
|
) : /* @__PURE__ */ jsx(Fragment, {});
|
|
36774
37390
|
}
|
|
36775
|
-
|
|
36776
|
-
// src/connection/auth/sso-name.ts
|
|
36777
|
-
var clean = (value) => value?.trim() ?? "";
|
|
36778
|
-
function resolveSsoName(profile, preferred = {}, emailFallback) {
|
|
36779
|
-
const fullName = clean(profile.name);
|
|
36780
|
-
let given = clean(preferred.given_name) || clean(profile.given_name);
|
|
36781
|
-
let family = clean(preferred.family_name) || clean(profile.family_name);
|
|
36782
|
-
if (!given && fullName) {
|
|
36783
|
-
const surnameAtEnd = family && fullName.length > family.length && fullName.toLowerCase().endsWith(family.toLowerCase());
|
|
36784
|
-
given = surnameAtEnd ? fullName.slice(0, fullName.length - family.length).trim() : fullName.split(/\s+/)[0];
|
|
36785
|
-
}
|
|
36786
|
-
if (!family && given && fullName.toLowerCase().startsWith(given.toLowerCase())) {
|
|
36787
|
-
family = fullName.slice(given.length).trim();
|
|
36788
|
-
}
|
|
36789
|
-
if (!given && emailFallback) given = emailFallback.split("@")[0];
|
|
36790
|
-
return { given_name: given, family_name: family };
|
|
36791
|
-
}
|
|
36792
37391
|
var NO_RECOVERY_KEY_WARNING2 = "Without your password or a recovery key, we cannot recover your account or data.";
|
|
36793
37392
|
function ConnectedSsoCallback() {
|
|
36794
37393
|
const sso = useSsoSignIn();
|
|
@@ -36978,11 +37577,7 @@ function ConnectedSsoCallback() {
|
|
|
36978
37577
|
setIsCheckingStatus(true);
|
|
36979
37578
|
try {
|
|
36980
37579
|
console.info("[SSO] Checking user status...");
|
|
36981
|
-
const response = await arbi
|
|
36982
|
-
token: accessToken,
|
|
36983
|
-
email: user.email,
|
|
36984
|
-
picture: user.picture
|
|
36985
|
-
});
|
|
37580
|
+
const response = await ssoAccountStatus(arbi, accessToken, user);
|
|
36986
37581
|
console.info("[SSO] User status:", response.status);
|
|
36987
37582
|
setSsoStatus(response);
|
|
36988
37583
|
} catch (error2) {
|
|
@@ -37026,40 +37621,18 @@ function ConnectedSsoCallback() {
|
|
|
37026
37621
|
setIsSubmitting(true);
|
|
37027
37622
|
setError(null);
|
|
37028
37623
|
try {
|
|
37029
|
-
const
|
|
37030
|
-
|
|
37031
|
-
|
|
37032
|
-
|
|
37033
|
-
|
|
37034
|
-
|
|
37035
|
-
|
|
37036
|
-
|
|
37037
|
-
token: accessToken,
|
|
37038
|
-
email,
|
|
37039
|
-
password,
|
|
37040
|
-
firstName,
|
|
37041
|
-
lastName,
|
|
37042
|
-
picture: user.picture
|
|
37043
|
-
});
|
|
37044
|
-
await backUpOnSignup({
|
|
37045
|
-
email,
|
|
37046
|
-
password,
|
|
37047
|
-
signingPrivateKey,
|
|
37048
|
-
saveRecoveryKey,
|
|
37049
|
-
auth0Sub: user.sub
|
|
37050
|
-
});
|
|
37051
|
-
const login = await arbi.sso.login({
|
|
37052
|
-
token: accessToken,
|
|
37053
|
-
email,
|
|
37054
|
-
password,
|
|
37055
|
-
profile: { ...resolveSsoName(user, ssoStatus), picture: user.picture ?? null }
|
|
37056
|
-
});
|
|
37624
|
+
const { login, registered, linked } = await completeSsoSignIn(arbi, {
|
|
37625
|
+
token: accessToken,
|
|
37626
|
+
user,
|
|
37627
|
+
status: ssoStatus,
|
|
37628
|
+
password,
|
|
37629
|
+
saveRecoveryKey
|
|
37630
|
+
});
|
|
37631
|
+
if (registered && login) {
|
|
37057
37632
|
auth.onRegistered?.(login);
|
|
37058
37633
|
return;
|
|
37059
37634
|
}
|
|
37060
|
-
|
|
37061
|
-
await signIn({ token: accessToken, email, password });
|
|
37062
|
-
if (ssoStatus.status === "local_exists") {
|
|
37635
|
+
if (linked) {
|
|
37063
37636
|
notify17("Your local account has been linked to SSO", "success");
|
|
37064
37637
|
}
|
|
37065
37638
|
} catch (err) {
|
|
@@ -37837,6 +38410,6 @@ function ConnectedAccountAccessBadge() {
|
|
|
37837
38410
|
] });
|
|
37838
38411
|
}
|
|
37839
38412
|
|
|
37840
|
-
export { AddAddonDialog, AddFromAccountsButton, AgentBarShell, AgentControlBar, AgentSteps, AnswerTable, AskAgainContext, BACKFILL_OPTIONS, BULK_REPROCESS_LIMIT, BillingProjectEntity, ChangePlanDialog, ChatAttachmentList, ConnectedAccountAccessBadge, ConnectedAccountSettings, ConnectedAddContacts, ConnectedAgentChat, ConnectedAgentChatPanel, ConnectedAgentConfigForm, ConnectedAgentCreator, ConnectedAiReview, ConnectedAppsSettings, ConnectedAuthorizeAgent, ConnectedBranchControls, ConnectedBulkTagEditor, ConnectedCalendar, ConnectedChatThread, ConnectedCitationRenderer, ConnectedCompactConversation, ConnectedConfigForm, ConnectedContactCardForm, ConnectedContactToggle, ConnectedContactsDirectory, ConnectedConversation, ConnectedConversationDocumentPicker, ConnectedConversationEmpty, ConnectedConversationStart, ConnectedDangerZone, ConnectedDeploymentStorage, ConnectedDeveloperConfig, ConnectedDriveSyncDialog, ConnectedExportDialog, ConnectedExportPanel, ConnectedFactsPage, ConnectedFieldsEditor, ConnectedFieldsManager, ConnectedFilesBulkActions, ConnectedFilesExplorer, ConnectedFilesPage, ConnectedForgotPassword, ConnectedGrantWorkspaceAccessDialog, ConnectedGroupMembers, ConnectedIdentityVerification, ConnectedLoginPage, ConnectedLogoutDialog, ConnectedMailAccounts, ConnectedMailComposer, ConnectedMailInviteCard, ConnectedMailMessage, ConnectedMailSettings, ConnectedMailSetup, ConnectedMailbox, ConnectedMailboxSyncDialog, ConnectedMessage, ConnectedMessageArea, ConnectedMessageList, ConnectedMessenger, ConnectedModelSelector, ConnectedMoveToFolder, ConnectedNewThreadDialog, ConnectedNotificationCenter, ConnectedNotificationPreferences, ConnectedOAuthConsentPage, ConnectedPasswordChangeDialog, ConnectedPremiumModels, ConnectedPrivacySettings, ConnectedProfileCard, ConnectedProjectEntity, ConnectedProjectStorage, ConnectedProjectsPanel, ConnectedPublicBooking, ConnectedQuotaDialog, ConnectedRecentlyDeletedButton, ConnectedRecoveryKeyDialog, ConnectedRequestWorkspaceAccess, ConnectedRequireVerified, ConnectedSearchPage, ConnectedSecuritySection, ConnectedSessionsRow, ConnectedSettingsPage, ConnectedSharedFilesPage, ConnectedSignatureVerifyPage, ConnectedSkillUpload, ConnectedSkillsLibrary, ConnectedSsoCallback, ConnectedStorageProjectCard, ConnectedStorageSettings, ConnectedTagEditorDialog, ConnectedTagEntity, ConnectedTagForm, ConnectedTagTable, ConnectedTagsPage, ConnectedTaskAccessRequest, ConnectedTaskActivityDialog, ConnectedTaskComposer, ConnectedTaskStartDialog, ConnectedThreadFollow, ConnectedThreadLauncher, ConnectedThreadTabs, ConnectedThreadTaskBar, ConnectedThreadsPreview, ConnectedTransferWatcher, ConnectedUpcomingEvents, ConnectedUpload, ConnectedUploadDropzone, ConnectedUserEntity, ConnectedWelcomeDialog, ConnectedWorkflowHistory, ConnectedWorkflowRunner, ConnectedWorkflowStart, ConnectedWorkspaceActivity, ConnectedWorkspaceDashboard, ConnectedWorkspaceEntity, ConnectedWorkspaceList, ConnectedWorkspaceMembers, ConnectedWorkspaceNotificationMenu, ConnectedWorkspaceSettings, ConnectedWorkspaceTrash, ConversationAlert, ConversationComposer2 as ConversationComposer, ConversationEntity, ConversationSendButton, ConversationStatusCell, DEFAULT_CONNECTED_SEARCH_PAGE_LABELS, DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS, DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, DEFAULT_OAUTH_PERMISSIONS, DEFAULT_SEARCH_FIELDS, DEFAULT_SEARCH_ROW_LABELS, DEFAULT_SETTINGS_SECTIONS, DEFAULT_TIMELINE_LABEL_WIDTH, DEFAULT_WORKSPACE_LIST_LABELS, DeveloperFooter, DocumentFolderCell, DocumentLabelsCell, DocumentNameCell, DocumentSharedCell, DocumentStatusGlyph, DocumentSyncGlyph, DocumentUser, DocumentsFilterBarActions, DocumentsUploadButton, EmptyWorkspaceUpload, FACTS_GRID_ID, FILES_PREFS_KEY, FileTooltipContent, ImportVcfButton, ImportVcfSummary, InvoicesModal, LOOK_AGAIN_LABEL, MessageDetailsModal, MessageLiveSeconds, MicButton, NewProjectFlow, NotificationCenter, NotificationEvent, PENDING_LOOKUP_MS, PENDING_RECOVERY_KEY, PENDING_TASK_MESSAGE, PREMIUM_TIER_TAG, PROJECTS_BASE_TAB_ID, PROMPT_BINDINGS, PersistedGridView, ProgressiveLoadingChip, ProjectDetail, ProjectUsageContent, ProjectsTable, REFERRAL_OFFER, RecoveryKeyDownload, RelatedDocumentsCell, RunStatsBadges, RunningSubagents, SEARCH_FIELD_OPTIONS, SETTINGS_SECTION_IDS, STANDARD_TIER_TAG, SessionStatusIcon, SharedProjects, SourceChips, SsoResendVerificationButton, StatusCell, StorageBreakdown, StorageItemsTable, StorageTiers, StreamedArtifact, TILE_DEFAULT, TILE_MAX, TILE_MIN, ThreadSwitcher, UserAvatar, ViewSelector, WORKSPACES_TAB_ID, WorkflowLaunchHost, WorkflowRunStatusCell, WorkflowRunThread, WorkflowStepMessage, accountSettingsSection, backUpOnSignup, bookingCancelLink, buildNotificationCenterItems, buildProjectSummaries, chatSettingsSection, closeAccessRequestReview, connectedAppsSettingsSection, connectionSettingsSection, countNotificationTypes, createDocumentColumns, createEventCall, createNotificationTargetOpener, createTagColumn, deduplicateByContentHash, defaultHost, describePlan, distinctPeers, documentFamilyMeta, documentFieldContent, filesViewMode, filterNotificationCenterItems, groupFallbackName, identifyOAuthClient, isActiveDocumentStatus, joinEventMeeting, loadEventWebinar, mailSettingsSection, openMeetingLink, organisationSettingsSection, parseArbiCallUrl, parseOAuthConsentRequest, parseQuotaError, parseTypedSkill, primaryProjectWorkspace, privacySettingsSection, renderConnectedUser, renderSessionStatusIcon, requestProjectBillingFocus, resolveAttendeeUsers, resolveAttendeeUsersRemote, resolveCallPeers, resolveCallPeersRemote, resolveLaunchInputs, resolveMailbox, resolveSsoName, reviewAccessRequest, reviewProgress, shareEventCall, startMenuItem, storageSettingsSection, suppliedKinds, threadStateOf, toWorkspaceSummary, transferOutcome, updateEventWebinarRoles, usageSettingsSection, useAccessRequestUnderReview, useAddFromUrls, useAiReviewStore, useAuthPages, useAutoRefreshPendingProjects, useConnectedCalendarCalls, useConnectedNotificationBell, useConnectedShellWorkspaces, useConnectedThreadActivity, useConnectedWorkspaceList, useConnectedWorkspaceSettings, useDocumentBulkActions, useDocumentFilters, useDocumentFolders, useDocumentGridSync, useDocumentNavigation, useDocumentTable, useExportStore, useFilesDialogs, useFilesGridStates, useFilesPrefs, useFilesStore, useLaunchWorkflow, useMemberLookup, useMessengerRows, useModelPicker, useNotificationBellEntry, useOpenBillingPortal, useOpenChunk, useOpenNotificationTarget, useOpenWorkspaceActivityTarget, useOpenWorkspaceIcon, usePendingFolders, usePendingTaskThread, useProjectBillingFocus, useProjectSummaries, useProjectSummary, useReferralReward, useRenderTaskPerson, useResolvedDocStatus, useSkillsEnabled, useSlashItems, useSlashSkillWorkflows, useSsoSignIn, useStartRequestedDraft, useTableViews, useTaskPeople, useTaskStart, useThreadLabels, useThreadTabs, useWorkflowDefinitions, useWorkflowLaunch, useWorkflowTasks, useWorkspaceDocTitles, viewsOfTable, webinarRolesByUser, windowLabel, withMissingTableViews, withTableView, withoutTableView, workflowRunView };
|
|
38413
|
+
export { AddAddonDialog, AddFromAccountsButton, AgentBarShell, AgentControlBar, AgentSteps, AnswerTable, AskAgainContext, BACKFILL_OPTIONS, BULK_REPROCESS_LIMIT, BillingProjectEntity, ChangePlanDialog, ChatAttachmentList, ConnectedAccountAccessBadge, ConnectedAccountSettings, ConnectedAddContacts, ConnectedAgentChat, ConnectedAgentChatPanel, ConnectedAgentConfigForm, ConnectedAgentCreator, ConnectedAiReview, ConnectedAppsSettings, ConnectedAuthorizeAgent, ConnectedBranchControls, ConnectedBulkTagEditor, ConnectedCalendar, ConnectedChatThread, ConnectedCitationRenderer, ConnectedCompactConversation, ConnectedConfigForm, ConnectedContactCardForm, ConnectedContactToggle, ConnectedContactsDirectory, ConnectedConversation, ConnectedConversationDocumentPicker, ConnectedConversationEmpty, ConnectedConversationStart, ConnectedDangerZone, ConnectedDeploymentStorage, ConnectedDeveloperConfig, ConnectedDriveSyncDialog, ConnectedExportDialog, ConnectedExportPanel, ConnectedFactsPage, ConnectedFieldsEditor, ConnectedFieldsManager, ConnectedFilesBulkActions, ConnectedFilesExplorer, ConnectedFilesPage, ConnectedForgotPassword, ConnectedGrantWorkspaceAccessDialog, ConnectedGroupMembers, ConnectedIdentityVerification, ConnectedLoginPage, ConnectedLogoutDialog, ConnectedMailAccounts, ConnectedMailComposer, ConnectedMailInviteCard, ConnectedMailMessage, ConnectedMailSettings, ConnectedMailSetup, ConnectedMailbox, ConnectedMailboxSyncDialog, ConnectedMessage, ConnectedMessageArea, ConnectedMessageList, ConnectedMessenger, ConnectedModelSelector, ConnectedMoveToFolder, ConnectedNewThreadDialog, ConnectedNotificationCenter, ConnectedNotificationPreferences, ConnectedOAuthConsentPage, ConnectedPasswordChangeDialog, ConnectedPremiumModels, ConnectedPrivacySettings, ConnectedProfileCard, ConnectedProjectEntity, ConnectedProjectStorage, ConnectedProjectsPanel, ConnectedPublicBooking, ConnectedQuotaDialog, ConnectedRecentlyDeletedButton, ConnectedRecoveryKeyDialog, ConnectedRequestWorkspaceAccess, ConnectedRequireVerified, ConnectedSearchPage, ConnectedSecuritySection, ConnectedSessionsRow, ConnectedSettingsPage, ConnectedSharePointAdminConsentPage, ConnectedSharedFilesPage, ConnectedSignatureVerifyPage, ConnectedSkillUpload, ConnectedSkillsLibrary, ConnectedSsoCallback, ConnectedStorageProjectCard, ConnectedStorageSettings, ConnectedTagEditorDialog, ConnectedTagEntity, ConnectedTagForm, ConnectedTagTable, ConnectedTagsPage, ConnectedTaskAccessRequest, ConnectedTaskActivityDialog, ConnectedTaskComposer, ConnectedTaskStartDialog, ConnectedThreadFollow, ConnectedThreadLauncher, ConnectedThreadTabs, ConnectedThreadTaskBar, ConnectedThreadsPreview, ConnectedTransferWatcher, ConnectedUpcomingEvents, ConnectedUpload, ConnectedUploadDropzone, ConnectedUserEntity, ConnectedWelcomeDialog, ConnectedWorkflowHistory, ConnectedWorkflowRunner, ConnectedWorkflowStart, ConnectedWorkspaceActivity, ConnectedWorkspaceDashboard, ConnectedWorkspaceEntity, ConnectedWorkspaceList, ConnectedWorkspaceMembers, ConnectedWorkspaceNotificationMenu, ConnectedWorkspaceSettings, ConnectedWorkspaceTrash, ConversationAlert, ConversationComposer2 as ConversationComposer, ConversationEntity, ConversationSendButton, ConversationStatusCell, DEFAULT_CONNECTED_SEARCH_PAGE_LABELS, DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS, DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, DEFAULT_OAUTH_PERMISSIONS, DEFAULT_PROJECTS_LIST_LABELS, DEFAULT_PROJECT_LIST_COLUMNS, DEFAULT_SEARCH_FIELDS, DEFAULT_SEARCH_ROW_LABELS, DEFAULT_SETTINGS_SECTIONS, DEFAULT_TIMELINE_LABEL_WIDTH, DEFAULT_WORKSPACE_LIST_LABELS, DeveloperFooter, DocumentFolderCell, DocumentLabelsCell, DocumentNameCell, DocumentSharedCell, DocumentStatusGlyph, DocumentSyncGlyph, DocumentUser, DocumentsFilterBarActions, DocumentsUploadButton, EmptyWorkspaceUpload, FACTS_GRID_ID, FILES_PREFS_KEY, FileTooltipContent, ImportVcfButton, ImportVcfSummary, InvoicesModal, LOOK_AGAIN_LABEL, MessageDetailsModal, MessageLiveSeconds, MicButton, NewProjectFlow, NotificationCenter, NotificationEvent, PENDING_LOOKUP_MS, PENDING_RECOVERY_KEY, PENDING_TASK_MESSAGE, PREMIUM_TIER_TAG, PROJECTS_BASE_TAB_ID, PROMPT_BINDINGS, PersistedGridView, ProgressiveLoadingChip, ProjectDetail, ProjectUsageContent, ProjectsTable, REFERRAL_OFFER, RecoveryKeyDownload, RelatedDocumentsCell, RunStatsBadges, RunningSubagents, SEARCH_FIELD_OPTIONS, SETTINGS_SECTION_IDS, STANDARD_TIER_TAG, SessionStatusIcon, SharedProjects, SourceChips, SsoResendVerificationButton, StatusCell, StorageBreakdown, StorageItemsTable, StorageTiers, StreamedArtifact, TILE_DEFAULT, TILE_MAX, TILE_MIN, ThreadSwitcher, UserAvatar, ViewSelector, WORKSPACES_TAB_ID, WorkflowLaunchHost, WorkflowRunStatusCell, WorkflowRunThread, WorkflowStepMessage, accountSettingsSection, appearanceSettingsSection, backUpOnSignup, bookingCancelLink, buildNotificationCenterItems, buildProjectSummaries, chatSettingsSection, closeAccessRequestReview, connectedAppsSettingsSection, connectionSettingsSection, countNotificationTypes, createDocumentColumns, createEventCall, createNotificationTargetOpener, createTagColumn, deduplicateByContentHash, defaultHost, describePlan, distinctPeers, documentFamilyMeta, documentFieldContent, filesViewMode, filterNotificationCenterItems, formatStorageGb, groupFallbackName, identifyOAuthClient, isActiveDocumentStatus, joinEventMeeting, loadEventWebinar, mailSettingsSection, openMeetingLink, openSsoPopup, organisationSettingsSection, parseArbiCallUrl, parseOAuthConsentRequest, parseQuotaError, parseTypedSkill, primaryProjectWorkspace, privacySettingsSection, renderConnectedUser, renderSessionStatusIcon, requestProjectBillingFocus, resolveAttendeeUsers, resolveAttendeeUsersRemote, resolveCallPeers, resolveCallPeersRemote, resolveLaunchInputs, resolveMailbox, resolveSsoName, reviewAccessRequest, reviewProgress, shareEventCall, startMenuItem, storageSettingsSection, suppliedKinds, threadStateOf, toWorkspaceSummary, transferOutcome, updateEventWebinarRoles, usageSettingsSection, useAccessRequestUnderReview, useAddFromUrls, useAiReviewStore, useAuthPages, useAutoRefreshPendingProjects, useConnectedCalendarCalls, useConnectedNotificationBell, useConnectedShellWorkspaces, useConnectedThreadActivity, useConnectedWorkspaceList, useConnectedWorkspaceSettings, useDocumentBulkActions, useDocumentFilters, useDocumentFolders, useDocumentGridSync, useDocumentNavigation, useDocumentTable, useExportStore, useFilesDialogs, useFilesGridStates, useFilesPrefs, useFilesStore, useLaunchWorkflow, useMemberLookup, useMessengerRows, useModelPicker, useNotificationBellEntry, useOpenBillingPortal, useOpenChunk, useOpenNotificationTarget, useOpenWorkspaceActivityTarget, useOpenWorkspaceIcon, usePendingFolders, usePendingTaskThread, useProjectBillingFocus, useProjectSummaries, useProjectSummary, useReferralReward, useRenderTaskPerson, useResolvedDocStatus, useSkillsEnabled, useSlashItems, useSlashSkillWorkflows, useSsoSignIn, useStartRequestedDraft, useTableViews, useTaskPeople, useTaskStart, useThreadLabels, useThreadTabs, useWorkflowDefinitions, useWorkflowLaunch, useWorkflowTasks, useWorkspaceDocTitles, viewsOfTable, webinarRolesByUser, windowLabel, withMissingTableViews, withTableView, withoutTableView, workflowRunView };
|
|
37841
38414
|
//# sourceMappingURL=index.js.map
|
|
37842
38415
|
//# sourceMappingURL=index.js.map
|