@arbidocs/blocks 0.4.156 → 0.4.158

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/{ConnectedNativeDocxComparison-S25BPUH5.cjs → ConnectedNativeDocxComparison-64RDIFEI.cjs} +8 -8
  2. package/dist/{ConnectedNativeDocxComparison-S25BPUH5.cjs.map → ConnectedNativeDocxComparison-64RDIFEI.cjs.map} +1 -1
  3. package/dist/{ConnectedNativeDocxComparison-2PLOOXSH.js → ConnectedNativeDocxComparison-JOWYEINS.js} +7 -7
  4. package/dist/{ConnectedNativeDocxComparison-2PLOOXSH.js.map → ConnectedNativeDocxComparison-JOWYEINS.js.map} +1 -1
  5. package/dist/{ConnectedNativeDocxEditor-JJAGMHZC.js → ConnectedNativeDocxEditor-OT5DLWCM.js} +6 -6
  6. package/dist/{ConnectedNativeDocxEditor-JJAGMHZC.js.map → ConnectedNativeDocxEditor-OT5DLWCM.js.map} +1 -1
  7. package/dist/{ConnectedNativeDocxEditor-YA4HWLY4.cjs → ConnectedNativeDocxEditor-UAAICR4X.cjs} +8 -8
  8. package/dist/{ConnectedNativeDocxEditor-YA4HWLY4.cjs.map → ConnectedNativeDocxEditor-UAAICR4X.cjs.map} +1 -1
  9. package/dist/{ConnectedStreamedWordArtifact-EXYZAU4Y.cjs → ConnectedStreamedWordArtifact-AJXPNTT3.cjs} +8 -8
  10. package/dist/ConnectedStreamedWordArtifact-AJXPNTT3.cjs.map +1 -0
  11. package/dist/{ConnectedStreamedWordArtifact-YAAXY5KY.js → ConnectedStreamedWordArtifact-GYBCBAJZ.js} +7 -7
  12. package/dist/{ConnectedStreamedWordArtifact-YAAXY5KY.js.map → ConnectedStreamedWordArtifact-GYBCBAJZ.js.map} +1 -1
  13. package/dist/{WorkspaceTableView-ZFMAYHUD.cjs → WorkspaceTableView-CZEFIAVT.cjs} +22 -13
  14. package/dist/WorkspaceTableView-CZEFIAVT.cjs.map +1 -0
  15. package/dist/{WorkspaceTableView-5OWX53R5.js → WorkspaceTableView-FQPJQWUE.js} +20 -11
  16. package/dist/WorkspaceTableView-FQPJQWUE.js.map +1 -0
  17. package/dist/agents/index.cjs +239 -239
  18. package/dist/agents/index.js +5 -5
  19. package/dist/calls/index.cjs +3 -3
  20. package/dist/calls/index.js +2 -2
  21. package/dist/{chunk-6HG56GCT.js → chunk-2DQHFJNP.js} +6 -6
  22. package/dist/{chunk-6HG56GCT.js.map → chunk-2DQHFJNP.js.map} +1 -1
  23. package/dist/{chunk-6HMCF4AJ.js → chunk-7KWUQQIB.js} +1033 -5
  24. package/dist/chunk-7KWUQQIB.js.map +1 -0
  25. package/dist/{chunk-O3FB62T5.cjs → chunk-AUDUNQO6.cjs} +49 -49
  26. package/dist/{chunk-O3FB62T5.cjs.map → chunk-AUDUNQO6.cjs.map} +1 -1
  27. package/dist/{chunk-OTU5KGQ6.cjs → chunk-DVIQWBDM.cjs} +4 -4
  28. package/dist/{chunk-OTU5KGQ6.cjs.map → chunk-DVIQWBDM.cjs.map} +1 -1
  29. package/dist/{chunk-VHJHY7TT.js → chunk-ECERC6TI.js} +3 -3
  30. package/dist/{chunk-VHJHY7TT.js.map → chunk-ECERC6TI.js.map} +1 -1
  31. package/dist/{chunk-HDJRSCRE.cjs → chunk-FBSIWJSG.cjs} +5 -5
  32. package/dist/{chunk-HDJRSCRE.cjs.map → chunk-FBSIWJSG.cjs.map} +1 -1
  33. package/dist/{chunk-W7CWGURO.js → chunk-FGI3YFQH.js} +7 -686
  34. package/dist/chunk-FGI3YFQH.js.map +1 -0
  35. package/dist/{chunk-WV4TD2HZ.cjs → chunk-FWIBFGUQ.cjs} +1055 -2
  36. package/dist/chunk-FWIBFGUQ.cjs.map +1 -0
  37. package/dist/{chunk-7HHYMDPE.js → chunk-GDRLM2EX.js} +3 -3
  38. package/dist/{chunk-7HHYMDPE.js.map → chunk-GDRLM2EX.js.map} +1 -1
  39. package/dist/{chunk-S74QMZVZ.cjs → chunk-GWGUZ5X6.cjs} +4 -4
  40. package/dist/{chunk-S74QMZVZ.cjs.map → chunk-GWGUZ5X6.cjs.map} +1 -1
  41. package/dist/{chunk-FEGXFABZ.cjs → chunk-LY37J3AC.cjs} +3 -3
  42. package/dist/{chunk-FEGXFABZ.cjs.map → chunk-LY37J3AC.cjs.map} +1 -1
  43. package/dist/{chunk-SN2GZ4ZM.cjs → chunk-NFI46I77.cjs} +3 -3
  44. package/dist/{chunk-SN2GZ4ZM.cjs.map → chunk-NFI46I77.cjs.map} +1 -1
  45. package/dist/{chunk-PGOSIJ2I.js → chunk-P6FMKXAB.js} +3 -3
  46. package/dist/{chunk-PGOSIJ2I.js.map → chunk-P6FMKXAB.js.map} +1 -1
  47. package/dist/{chunk-IJEISII2.cjs → chunk-RJUXSXBH.cjs} +3 -3
  48. package/dist/{chunk-IJEISII2.cjs.map → chunk-RJUXSXBH.cjs.map} +1 -1
  49. package/dist/{chunk-53RCZPMR.cjs → chunk-SCK3GAE5.cjs} +5 -5
  50. package/dist/{chunk-53RCZPMR.cjs.map → chunk-SCK3GAE5.cjs.map} +1 -1
  51. package/dist/{chunk-UKT3WH5Z.cjs → chunk-TAWPVD6C.cjs} +3 -3
  52. package/dist/{chunk-UKT3WH5Z.cjs.map → chunk-TAWPVD6C.cjs.map} +1 -1
  53. package/dist/{chunk-MUDEL7UL.cjs → chunk-UYC5BJCB.cjs} +5 -704
  54. package/dist/chunk-UYC5BJCB.cjs.map +1 -0
  55. package/dist/{chunk-2CWM2CFZ.js → chunk-V3HG3LK3.js} +3 -3
  56. package/dist/{chunk-2CWM2CFZ.js.map → chunk-V3HG3LK3.js.map} +1 -1
  57. package/dist/{chunk-UPMADXDU.js → chunk-VE6S6NRQ.js} +3 -3
  58. package/dist/{chunk-UPMADXDU.js.map → chunk-VE6S6NRQ.js.map} +1 -1
  59. package/dist/{chunk-UKCCV63X.js → chunk-VMFLWFXK.js} +3 -3
  60. package/dist/{chunk-UKCCV63X.js.map → chunk-VMFLWFXK.js.map} +1 -1
  61. package/dist/{chunk-HP2C4MD3.js → chunk-Y73X65FF.js} +3 -3
  62. package/dist/{chunk-HP2C4MD3.js.map → chunk-Y73X65FF.js.map} +1 -1
  63. package/dist/{chunk-F3EZDBDJ.js → chunk-Y7PPQ7UT.js} +3 -3
  64. package/dist/{chunk-F3EZDBDJ.js.map → chunk-Y7PPQ7UT.js.map} +1 -1
  65. package/dist/{chunk-DWZXSPMB.cjs → chunk-ZAVEMQ37.cjs} +3 -3
  66. package/dist/{chunk-DWZXSPMB.cjs.map → chunk-ZAVEMQ37.cjs.map} +1 -1
  67. package/dist/{chunk-YMQDDUKW.js → chunk-ZO7PJMCO.js} +3 -3
  68. package/dist/{chunk-YMQDDUKW.js.map → chunk-ZO7PJMCO.js.map} +1 -1
  69. package/dist/collaboration/index.cjs +1 -1
  70. package/dist/collaboration/index.js +1 -1
  71. package/dist/connect/docx.cjs +10 -10
  72. package/dist/connect/docx.js +6 -6
  73. package/dist/connect/index.cjs +1136 -556
  74. package/dist/connect/index.cjs.map +1 -1
  75. package/dist/connect/index.js +639 -64
  76. package/dist/connect/index.js.map +1 -1
  77. package/dist/connect/viewer.cjs +48 -48
  78. package/dist/connect/viewer.js +10 -10
  79. package/dist/connection/files/index.d.ts +5 -0
  80. package/dist/connection/files/support.d.ts +2 -0
  81. package/dist/connection/files/upload/AddFromAccountsButton.d.ts +16 -0
  82. package/dist/connection/files/upload/ConnectedUpload.d.ts +36 -0
  83. package/dist/connection/files/upload/ConnectedUploadDropzone.d.ts +36 -0
  84. package/dist/connection/files/upload/EmptyWorkspaceUpload.d.ts +13 -0
  85. package/dist/connection/files/upload/useAddFromUrls.d.ts +13 -0
  86. package/dist/connection/workspace-list/ConnectedWorkspaceList.d.ts +4 -2
  87. package/dist/connection/workspace-list/WorkspaceCardsView.d.ts +3 -2
  88. package/dist/connection/workspace-list/WorkspaceTableView.d.ts +3 -2
  89. package/dist/connection/workspace-list/index.d.ts +1 -1
  90. package/dist/connection/workspace-list/useConnectedWorkspaceList.d.ts +19 -0
  91. package/dist/connection/workspace-list/workspaceTable.d.ts +3 -1
  92. package/dist/connection/workspace-settings/ConnectedWorkspaceSettings.d.ts +3 -1
  93. package/dist/facts/index.cjs +55 -55
  94. package/dist/facts/index.js +5 -5
  95. package/dist/files/PrivacyExplainerModal.d.ts +8 -0
  96. package/dist/files/ShareToggle.d.ts +8 -0
  97. package/dist/files/UrlInputDialog.d.ts +24 -0
  98. package/dist/files/index.cjs +314 -294
  99. package/dist/files/index.d.ts +4 -0
  100. package/dist/files/index.js +6 -6
  101. package/dist/files/media-preview.d.ts +24 -0
  102. package/dist/home/index.cjs +2 -2
  103. package/dist/home/index.js +2 -2
  104. package/dist/index.cjs +434 -434
  105. package/dist/index.js +11 -11
  106. package/dist/retrieval/index.cjs +1 -1
  107. package/dist/retrieval/index.js +1 -1
  108. package/dist/settings/index.cjs +165 -165
  109. package/dist/settings/index.js +3 -3
  110. package/dist/shell/index.cjs +3 -3
  111. package/dist/shell/index.js +3 -3
  112. package/dist/studio/index.cjs +2 -2
  113. package/dist/studio/index.js +2 -2
  114. package/dist/workflow-canvas/index.cjs +17 -17
  115. package/dist/workflow-canvas/index.js +5 -5
  116. package/node_modules/@arbidocs/coedit/package.json +1 -1
  117. package/package.json +5 -5
  118. package/dist/ConnectedStreamedWordArtifact-EXYZAU4Y.cjs.map +0 -1
  119. package/dist/WorkspaceTableView-5OWX53R5.js.map +0 -1
  120. package/dist/WorkspaceTableView-ZFMAYHUD.cjs.map +0 -1
  121. package/dist/chunk-6HMCF4AJ.js.map +0 -1
  122. package/dist/chunk-MUDEL7UL.cjs.map +0 -1
  123. package/dist/chunk-W7CWGURO.js.map +0 -1
  124. package/dist/chunk-WV4TD2HZ.cjs.map +0 -1
@@ -1,15 +1,16 @@
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, getQuotaItems, PRO_PACKS, planNameForPacks, proTierName, STORAGE_BLOCK_GB, ADDON_BLOCK_AI_GBP, formatResetDate, 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, aiUsageResetTimestamp, TAX_LOCATION_INVALID, FREE_COLLABORATORS, MAX_CHECKOUT_BLOCKS, reduceBounds, splitBlocks, autoRoom, isAddonBudgetZero, nextRemovedBlockSize, stepLabel, addStepCaption, blocksLabel, MIN_AUTO_TOPUP_THRESHOLD_GBP, USAGE_CAP_LABEL, CAP_REACHED_MESSAGE, USAGE_CAP_HELP, PLAN_CHOICE_PACKS, nextPeriodBody, addonSettingsBody, budgetSavedMessage } from '../chunk-7HHYMDPE.js';
3
- export { BillingSupportProvider, CAP_REACHED_MESSAGE, ZERO_BUDGET_MESSAGE, aiUsageResetTimestamp, formatMoney, formatResetDate, getQuotaItems, isAddonBudgetZero, isProProject, planBadgeView, planName, projectGroupBilling, useBillingSupport, useRewardBalance } from '../chunk-7HHYMDPE.js';
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, getQuotaItems, PRO_PACKS, planNameForPacks, proTierName, STORAGE_BLOCK_GB, ADDON_BLOCK_AI_GBP, formatResetDate, 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, aiUsageResetTimestamp, TAX_LOCATION_INVALID, FREE_COLLABORATORS, MAX_CHECKOUT_BLOCKS, reduceBounds, splitBlocks, autoRoom, isAddonBudgetZero, nextRemovedBlockSize, stepLabel, addStepCaption, blocksLabel, MIN_AUTO_TOPUP_THRESHOLD_GBP, USAGE_CAP_LABEL, CAP_REACHED_MESSAGE, USAGE_CAP_HELP, PLAN_CHOICE_PACKS, nextPeriodBody, addonSettingsBody, budgetSavedMessage } from '../chunk-GDRLM2EX.js';
3
+ export { BillingSupportProvider, CAP_REACHED_MESSAGE, ZERO_BUDGET_MESSAGE, aiUsageResetTimestamp, formatMoney, formatResetDate, getQuotaItems, isAddonBudgetZero, isProProject, planBadgeView, planName, projectGroupBilling, useBillingSupport, useRewardBalance } from '../chunk-GDRLM2EX.js';
4
4
  import { getRoleBadgeClass, formatRole, getRoleDescription, PageLoading, WorkspacePageFrame, WorkspaceIdentityPanel, WorkspaceProjectSlot, WorkspaceAudienceLine, CommonWorkspaceToggle, ExpandableSection, LeaveFooter, WorkspaceList, WorkspaceGroup, WorkspaceCard } from '../chunk-FPHTSNOE.js';
5
5
  import { isAgentAccount, workspaceConversationCount, workspaceDocumentCount, isListedWorkspace, WORKSPACE_CATEGORY_FILTERS, projectFilterId, workspaceFilterAttributes, groupWorkspacesByProject, byRecentUpdate } from '../chunk-BTF4AZMG.js';
6
6
  import { HomeLoadError, HomeFrame, HomeMain, HomeCenteredScroll, HomeCenteredColumn, DashboardRoot, DashboardBand, DashboardColumns, RecentList, DashboardAction, FactsStrip, FactMark, CreateTile } from '../chunk-ISHFVKVU.js';
7
7
  import { ProjectBandTitle, PlainBandTitle } from '../chunk-RQKWYKZY.js';
8
8
  import '../chunk-5TDGVOR5.js';
9
- import { DraggableHeader, SettingsSection, ProfileCard, AvatarPicker, IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, PasswordChangeDialog, SettingsCard, SettingsActionRow, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, SettingsRow, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, SettingsDangerZone, DeleteAccountDialog, toDeleteBlockerViews, SettingsPanel, PremiumModelsFrame, ConnectionsLoading, ConnectionsError, ConnectionsEmpty, SettingsPage, SyncDialogBody, SyncField, SyncSelect, SyncSmallNote, SyncLoading, SyncReconnectNotice, SyncNote, SyncTreeFrame, SyncLinkRow, SyncLinkButton, SyncOptions, SyncOptionToggle, SyncDialogFooter, InvoicesDialog, PlanDialogFrame, ProjectList, RenameDialog, SharedProjectsSection, SharedProjectRow, MoreInfo, MoreInfoList, ProjectDetailHeader, PlanBadge, ProjectDetailSection, PlanStack, PlanNotice, PlanPickerCard, PlanPickerHeader, PricingToggle, PromoCodeInput, PlanActionButton, applyTriStateFilters, PanelFrame, PanelAddButton, PanelFrameBody, PanelScroll, PanelActionsRow, ProjectRow, QuotaMeter, FilterChip, applyInvertedIndexFilter, buildInvertedIndex, serverConnectionView, ServerConnectionButton, ModelProviderLabel, SyncFolderRow, SyncFolderStatus, PlanTierOption, PlanActionRow, SubscriptionStatusView, DailyCapField, UsagePanel, UsageSummary, UsageQuotaHint, UsageToggle, UsageSection, UsageLineChart, UsageLegend, UsageProportionBar, UsageActionButton, PlanInfoPopover, PlanCardGrid, ReferralRewardSummary, CheckoutDialogFrame, ConnectionCard, ReferralRewardNote } from '../chunk-HP2C4MD3.js';
9
+ import { docIdsOf, toFactCitations, FactsToolbar, FactsFieldsButton, FactComposer, FactDateInput, FactSourcesRow, FactsLoading, FactsLoadError, FactsEmptyState, FactsCalendar, FactsGanttPane, FactsBulkBar, FactSourceGroup, EMPTY_FACT_DATE_FIELDS, withoutChunk, factDateSpanToFields, FactFieldRow, FactLabelsCell, enableFactTableColumnResize, citedVersionRef, withChunk, factDateFieldsToSpan, createFactColumns, FactRowActions, withoutDoc, withDoc, sourceDocCount, DEFAULT_FACT_COLUMN_LABELS } from '../chunk-ZO7PJMCO.js';
10
+ import { DraggableHeader, SettingsSection, ProfileCard, AvatarPicker, IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, PasswordChangeDialog, SettingsCard, SettingsActionRow, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, SettingsRow, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, SettingsDangerZone, DeleteAccountDialog, toDeleteBlockerViews, SettingsPanel, PremiumModelsFrame, ConnectionsLoading, ConnectionsError, ConnectionsEmpty, SettingsPage, SyncDialogBody, SyncField, SyncSelect, SyncSmallNote, SyncLoading, SyncReconnectNotice, SyncNote, SyncTreeFrame, SyncLinkRow, SyncLinkButton, SyncOptions, SyncOptionToggle, SyncDialogFooter, InvoicesDialog, PlanDialogFrame, ProjectList, RenameDialog, SharedProjectsSection, SharedProjectRow, MoreInfo, MoreInfoList, ProjectDetailHeader, PlanBadge, ProjectDetailSection, PlanStack, PlanNotice, PlanPickerCard, PlanPickerHeader, PricingToggle, PromoCodeInput, PlanActionButton, applyTriStateFilters, PanelFrame, PanelAddButton, PanelFrameBody, PanelScroll, PanelActionsRow, ProjectRow, QuotaMeter, FilterChip, applyInvertedIndexFilter, buildInvertedIndex, serverConnectionView, ServerConnectionButton, ModelProviderLabel, SyncFolderRow, SyncFolderStatus, PlanTierOption, PlanActionRow, SubscriptionStatusView, DailyCapField, UsagePanel, UsageSummary, UsageQuotaHint, UsageToggle, UsageSection, UsageLineChart, UsageLegend, UsageProportionBar, UsageActionButton, PlanInfoPopover, PlanCardGrid, ReferralRewardSummary, CheckoutDialogFrame, ConnectionCard, ReferralRewardNote } from '../chunk-Y73X65FF.js';
10
11
  export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-KCSIX7CY.js';
11
- import { useConnectedWorkspaceRole, ConnectedNativeDocxEditor } from '../chunk-PGOSIJ2I.js';
12
- export { ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedWorkflowsTable, DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, NativeDocxSupportProvider, toWorkflowFieldDocument, useConnectedAgentOptions, useConnectedWorkflowScopeSource, useConnectedWorkspaceRole, useNativeDocxSupport } from '../chunk-PGOSIJ2I.js';
12
+ import { useConnectedWorkspaceRole, ConnectedNativeDocxEditor } from '../chunk-P6FMKXAB.js';
13
+ export { ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedWorkflowsTable, DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, NativeDocxSupportProvider, toWorkflowFieldDocument, useConnectedAgentOptions, useConnectedWorkflowScopeSource, useConnectedWorkspaceRole, useNativeDocxSupport } from '../chunk-P6FMKXAB.js';
13
14
  export { DocumentViewerSupportProvider, useDocumentViewerSupport } from '../chunk-EYJMMGXF.js';
14
15
  import { useConnectedTags, useConnectedDocuments, useConnectedConversations } from '../chunk-KDLX5AA7.js';
15
16
  export { ConnectedWorkspaceDataProvider, useConnectedConversations, useConnectedDocuments, useConnectedTags } from '../chunk-KDLX5AA7.js';
@@ -18,28 +19,27 @@ export { ConnectionProvider, SESSION_EXPIRED_MESSAGE, isAuthenticated, useConnec
18
19
  import { SignDocumentDialog } from '../chunk-2YOVK524.js';
19
20
  import '../chunk-MTSKK3BN.js';
20
21
  import '../chunk-ONTUMV74.js';
21
- import { docIdsOf, toFactCitations, FactsToolbar, FactsFieldsButton, FactComposer, FactDateInput, FactSourcesRow, FactsLoading, FactsLoadError, FactsEmptyState, FactsCalendar, FactsGanttPane, FactsBulkBar, FactSourceGroup, EMPTY_FACT_DATE_FIELDS, withoutChunk, factDateSpanToFields, FactFieldRow, FactLabelsCell, enableFactTableColumnResize, citedVersionRef, withChunk, factDateFieldsToSpan, createFactColumns, FactRowActions, withoutDoc, withDoc, sourceDocCount, DEFAULT_FACT_COLUMN_LABELS } from '../chunk-YMQDDUKW.js';
22
22
  import { FactSourcesPanel, FactPassageItem } from '../chunk-HFZ45FD3.js';
23
- import { FilterButton, ExplorerFileTile, formatFolderSegment, hasFolderProviderIcon, FolderProviderIcon, ExplorerFolderTile, searchExplorerDocuments, buildExplorerEntries, collectFolderDocs, joinFolderPath, getExplorerDisplayName, RECENTLY_DELETED_HINT, RECENTLY_DELETED_HINT_PLURAL, canDeleteDocument, ExplorerFrame, ExplorerStage, ExplorerScroller, ExplorerLoadingTiles, ExplorerEmpty, ExplorerMarquee, ExplorerDropOverlay, ExplorerDragPreview, ExplorerFileTooltip, visibilityAudience, StatusPill, FailedStageIcon, FilesViewCenter, FilesFilterBar, ROW_MIN, rowHeightForLines, linesForRowHeight, RowDensityControl, FolderFilterButton, FolderPickerRow, FieldLabelsSelect } from '../chunk-6HMCF4AJ.js';
24
- import '../chunk-RC6VTY2H.js';
23
+ import { FilterButton, ExplorerFileTile, formatFolderSegment, hasFolderProviderIcon, FolderProviderIcon, ExplorerFolderTile, searchExplorerDocuments, buildExplorerEntries, collectFolderDocs, joinFolderPath, getExplorerDisplayName, RECENTLY_DELETED_HINT, RECENTLY_DELETED_HINT_PLURAL, canDeleteDocument, ExplorerFrame, ExplorerStage, ExplorerScroller, ExplorerLoadingTiles, ExplorerEmpty, ExplorerMarquee, ExplorerDropOverlay, ExplorerDragPreview, ExplorerFileTooltip, visibilityAudience, StatusPill, FailedStageIcon, FilesViewCenter, FilesFilterBar, ROW_MIN, rowHeightForLines, linesForRowHeight, RowDensityControl, FolderFilterButton, FolderPickerRow, UploadFrame, UploadContainer, SelectedFilesList, RejectedFilesList, UploadErrorMessage, UploadProgress, VendorLogo, PrivacyExplainerModal, UploadSourceSection, UploadSourcePicker, UploadBrowseButtons, FieldLabelsSelect, ShareToggle, UploadDropArea, UrlInputDialog, UploadUrlButton } from '../chunk-7KWUQQIB.js';
25
24
  import { ViewToggle } from '../chunk-JJA6GQKH.js';
26
- import { WorkspaceActivityList, WorkspaceNotificationMenu, ThreadFollowMenuItem, ThreadFollowButton, TagTable, TagPicker, tagsPageNouns, entitiesPhrase, ExtractEntitiesDialog, GridRowNavigator, LoadingIndicator, EntityIdentityBar, IDENTITY_NAME_MAX_LENGTH, tagTableDocx, documentCount, tagTableLabels, TagDetail, tagDetailLabels, tagNoteLabel, tagKindDescription, glossaryEntries, glossaryDocx, glossaryMarkdown, glossaryFileName } from '../chunk-UKCCV63X.js';
25
+ import '../chunk-RC6VTY2H.js';
26
+ import { WorkspaceActivityList, WorkspaceNotificationMenu, ThreadFollowMenuItem, ThreadFollowButton, TagTable, TagPicker, tagsPageNouns, entitiesPhrase, ExtractEntitiesDialog, GridRowNavigator, LoadingIndicator, EntityIdentityBar, IDENTITY_NAME_MAX_LENGTH, tagTableDocx, documentCount, tagTableLabels, TagDetail, tagDetailLabels, tagNoteLabel, tagKindDescription, glossaryEntries, glossaryDocx, glossaryMarkdown, glossaryFileName } from '../chunk-VMFLWFXK.js';
27
27
  import { MemberAvatarStack } from '../chunk-XNOASBGW.js';
28
- import '../chunk-ZCOVDK2E.js';
29
28
  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';
29
+ import { SearchHit } from '../chunk-DEPF5LQI.js';
30
30
  import { UsageMeter } from '../chunk-66TA5IBN.js';
31
31
  import '../chunk-UJE32SST.js';
32
32
  import '../chunk-NHZK64TQ.js';
33
+ import { TimelineZoomControl } from '../chunk-4EZVCGRL.js';
33
34
  import { PlainMailBodyEditor, MemberNameCell, MemberMutedText, MemberRoleCell, MemberListLoading, MemberBulkActions, buildMailFolderTree, MailFolderTree, draftMailCompose, replyMailCompose, emptyMailCompose, MailGrid, MailMessageView, MailDocumentPicker, parseMailRecipients } from '../chunk-SZSJGZSO.js';
34
35
  import '../chunk-NBV56SGU.js';
35
36
  import { WorkspaceIdentity, workspaceKindColor } from '../chunk-A3XPS2EU.js';
36
37
  import { buildDeepLinkPath } from '../chunk-SV65E4QW.js';
38
+ import '../chunk-ZCOVDK2E.js';
37
39
  import { isDefinitionsLabel, DOCX_MIME_TYPE, toDefinitionSource, definitionLabels } from '../chunk-DIB4JYUY.js';
38
- import { SearchHit } from '../chunk-DEPF5LQI.js';
39
- import { TimelineZoomControl } from '../chunk-4EZVCGRL.js';
40
40
  import { decodeWhitespaceEntities } from '../chunk-AF6RDAJF.js';
41
41
  import '../chunk-SDOEHEJP.js';
42
- import { 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, composePersona, importSkillFile, importSkillFromUrl, WorkflowRunner, skillSlug, serializeSkill, fromPlanSteps, toPlanSteps, useWorkflowView, STATUS_LABELS, asTaskStatus, workflowToSkillMarkdown } from '../chunk-UPMADXDU.js';
42
+ import { 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, composePersona, importSkillFile, importSkillFromUrl, WorkflowRunner, skillSlug, serializeSkill, fromPlanSteps, toPlanSteps, useWorkflowView, STATUS_LABELS, asTaskStatus, workflowToSkillMarkdown } from '../chunk-VE6S6NRQ.js';
43
43
  import { MultiSelect } from '../chunk-CQCC7LE7.js';
44
44
  import { PersonPill } from '../chunk-XI37A7HH.js';
45
45
  import { SectionLabel } from '../chunk-BQ77KSXU.js';
@@ -48,14 +48,19 @@ import '../chunk-P6GHJSLR.js';
48
48
  import '../chunk-RLWIUUQ5.js';
49
49
  import '../chunk-M4S75AEJ.js';
50
50
  import '../chunk-5LXQPP2K.js';
51
- import '../chunk-VF5EUAIV.js';
52
51
  import { SelectionBar, SelectionBarAction } from '../chunk-NUNKSZKU.js';
53
52
  import { FilterInput } from '../chunk-YU2KUMGE.js';
53
+ import '../chunk-VF5EUAIV.js';
54
54
  import { GridView } from '../chunk-N5YEF3LC.js';
55
55
  import { StreamedArtifactFrame } from '../chunk-LOJVUGBJ.js';
56
56
  import '../chunk-VILAPTCB.js';
57
- import { ConfirmDialog } from '../chunk-VHJHY7TT.js';
57
+ import { ConfirmDialog } from '../chunk-ECERC6TI.js';
58
58
  import { TabHeader } from '../chunk-4WWM3GQ5.js';
59
+ import { 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, attendeeKey, buildDeleteTarget, EventEditor, toSettingsValue, CalendarSettingsForm, describeCalendarError, normalizeFeedUrl, parseOverlayLink, isAllDayDraft, draftRangeUtc, freeBusyToRows, SchedulingAssistant, applySuggestion, toSuggestionViews, RoomFinder, bookingLink, defaultRoomWindow, bookingToForm, emptyBookingForm, slugify, WeeklyHoursEditor, validateBookingForm, formToBookingBody, WEEKDAY_NAMES, formatBusy, buildEditRequest } from '../chunk-BJ24VPOA.js';
60
+ import { detectTimeZone, utcToDate, formatPlainDate, formatInZone, safeZone, todayInZone, addDays, wallToUtc } from '../chunk-GTCC2VAR.js';
61
+ import { PassagePill, useCopyText } from '../chunk-ETZ5A3GU.js';
62
+ import { useBlocksEnvironment, useRequestedSettingsSection, BlocksProvider } from '../chunk-F57LNUSZ.js';
63
+ import { ModalScaffold, ModalSection } from '../chunk-TX2ZICS7.js';
59
64
  import { ChatPage } from '../chunk-GWSGIZQ5.js';
60
65
  import '../chunk-7XF5SFJ2.js';
61
66
  import { takeOpenDocumentForTurn, useRegisterOpenDocument } from '../chunk-YBLIKTJK.js';
@@ -66,23 +71,18 @@ import '../chunk-AUS3KBHJ.js';
66
71
  import { useIsPhone } from '../chunk-SLSBJRWW.js';
67
72
  import '../chunk-NPLYHR2E.js';
68
73
  import '../chunk-7F6CBP3Z.js';
69
- import { 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, attendeeKey, buildDeleteTarget, EventEditor, toSettingsValue, CalendarSettingsForm, describeCalendarError, normalizeFeedUrl, parseOverlayLink, isAllDayDraft, draftRangeUtc, freeBusyToRows, SchedulingAssistant, applySuggestion, toSuggestionViews, RoomFinder, bookingLink, defaultRoomWindow, bookingToForm, emptyBookingForm, slugify, WeeklyHoursEditor, validateBookingForm, formToBookingBody, WEEKDAY_NAMES, formatBusy, buildEditRequest } from '../chunk-BJ24VPOA.js';
70
- import { detectTimeZone, utcToDate, formatPlainDate, formatInZone, safeZone, todayInZone, addDays, wallToUtc } from '../chunk-GTCC2VAR.js';
71
- import { PassagePill, useCopyText } from '../chunk-ETZ5A3GU.js';
72
- import { useBlocksEnvironment, useRequestedSettingsSection, BlocksProvider } from '../chunk-F57LNUSZ.js';
73
- import { ModalScaffold, ModalSection } from '../chunk-TX2ZICS7.js';
74
74
  import { fmtDate, initials } from '../chunk-OXF2IFXG.js';
75
75
  import '../chunk-VUNV25KB.js';
76
76
  import { lazy, memo, useState, useEffect, useCallback, createContext, useMemo, forwardRef, useRef, useLayoutEffect, useImperativeHandle, useContext, Suspense, useSyncExternalStore, useId } from 'react';
77
77
  import { QueryClient, QueryClientProvider, useQueryClient, useQuery } from '@tanstack/react-query';
78
- import { HtmlIcon, useMailPolicy, useProcessingTasks, useUpdateDocuments, useDeleteDocuments, useRenameFolder, useDownloadDocuments, useTags, useDocumentThumbnails, useArbiSessionState, useProcessingTask, getDocumentSubject, useWorkspaces, ArbiProvider, useConversations, useRunConversation, useWorkspaceActivity, useWorkspaceUsers, isWorkspaceNotificationType, useArbi, useNotifications, useDeleteNotifications, useMarkNotificationsRead, useWorkspaceNotificationLevel, useFollowThread, useUploadSkillFiles, useSkills, useSetSkillVisibility, useDeleteSkill, useSkillSource, useAgentModels, useMcpTools, useAgentConfig, useAgentWorkspaces, useCreateAgent, useSaveAgentConfig, useGrantAgentAccess, useRevokeAgentAccess, useGenerateAgentAvatar, useWorkflowRuns, useConversationActivity, useAgents, ArtifactCanvas, useArbiChat, useDocuments, useTagKindSchema, useCreateTag, useSetTagValues, useUpdateTagKindSchema, useFacts, useDeleteTag, useExtractEntities, useShellWorkspaces, ArbiBotHeadIcon, 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, useUserSettings, useUpdateUserSettings, useAvailableModels, useConnectorVendorVisibility, useConnectorCatalog, useMyConnectors, useDisconnectConnector, useSlackConnection, useDisconnectSlack, isMailboxSyncVendor, isSharePointVendor, useUpdateWorkspace, useAddWorkspaceMembers, useRemoveWorkspaceMembers, useSetWorkspaceMemberRoles, toShellWorkspace, useEnableMailboxSync, useMailboxFolders, useEnableDriveSync, useDriveFolderChildren, connectorErrorStatus, useProjectInvoices, useProjects, useUpdateProjectFields, useUserUsageToday, formatGbp, useChargeWatch, useAddonQuote, STILL_WORKING, useProjectBillingPortal, useIsSlow, useProducts, useCreateProject, useDeleteProject, useRefreshProject, useCanCreateProjects, useDeleteWorkspaces, PROJECT_CREATION_DENIED_REASON, MAX_RETRIEVE_DOC_IDS, useSemanticSearch, useAssignDocTags, useArbiWebSocket, useWorkNotifications, describeServerNotification, useMailUnlock, useMailFolders, useMailMessages, useMailDraftCompose, useMailMessage, useMailCache, MailOfflineUnavailableError, accountPath, useCalendarEvents, useCalendars, useFetchCalendarEvent, useCalendarSettings, useCalendarOverlays, useCalendarOutbox, useCalendarAccounts, useSyncAccountsOnOpen, useResumeCalendarAccountConnect, useCreateEvent, useUpdateEvent, useDeleteEvent, useMoveEvent, useRespondToEvent, useCreateCalendar, useUpdateCalendar, useDeleteCalendar, useImportCalendar, useSaveCalendarSettings, useRefreshCalendar, useCalendarEvent, useMailAttachmentText, useCalendarEventByUid, getPublicBookingPage, bookPublicSlot, PublicBookingError, useAgentSession, useStartAgentSession, useCloseAgentSession, isQueuedCalendarWrite, isAliasTakenError, nextAliasSuggestion, aliasTakenMessage, mailJson, connectorReturnTo, ArbiWebSocketProvider, isDeploymentUserNotification, getWorkspaceActionText, getWorkspaceSentPhrase, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_TITLE, documentActivityPhrase, isSignatureNotificationType, inputRequestTitle, WORK_NOTIFICATION_LABELS, documentDisplayName, getWorkspaceKind, formatRelativeTime, useCreateWork, useActOnStep, useConversationThreads, useUpdateTag, usePassageQuotes, useUpdateFact, useDeleteFact, useCreateFact, ProviderIcon, formatGbpPerMillionTokens, useDriveFolderDocCount, useChangeProjectPlan, useCancelProjectSubscription, usePreviewProjectPlanChange, useAddProjectAddonBlock, useProjectUsage, usePlanQuote, useCreateProjectCheckout, useInvalidateProjects, fileAttachment, useMailProjects, useSaveMailDraft, useSendMail, useMailDraftReplaced, useCalendarInvitations, useDecideCounter, useSearchContacts, usePublishCalendar, useCalendarShares, useShareCalendar, useUnshareCalendar, useSubscribeCalendar, useHolidayCountries, useAddHolidayCalendar, cancelPublicBooking, AiAnswer, signatureNotificationPhrase, signatureRequestMeta, getNotificationTypeMeta, useMailDraftEditor, useFreeBusy, useRooms, useFindTime, useCalendarSupport, useStartCalendarAccountOAuth, useConnectOAuthAccount, useBookingPages, useDeleteBookingPage, SHAREPOINT_VENDORS, useUpdateProjectNextPeriodAddons, useUpdateProjectAddonSettings, useSyncCalendarAccount, useUpdateCalendarAccount, useDisconnectCalendarAccount, ACCOUNT_VENDOR, useCalDavProfiles, useConnectCalDavAccount, useSaveBookingPage, useCreateRoom } from '@arbidocs/react';
78
+ import { HtmlIcon, useMailPolicy, useProcessingTasks, useUpdateDocuments, useDeleteDocuments, useRenameFolder, useDownloadDocuments, useTags, useDocumentThumbnails, useArbiSessionState, useProcessingTask, getDocumentSubject, useWorkspaces, ArbiProvider, useConversations, useRunConversation, useWorkspaceActivity, useWorkspaceUsers, isWorkspaceNotificationType, useArbi, useNotifications, useDeleteNotifications, useMarkNotificationsRead, useWorkspaceNotificationLevel, useFollowThread, useUploadSkillFiles, useSkills, useSetSkillVisibility, useDeleteSkill, useSkillSource, useAgentModels, useMcpTools, useAgentConfig, useAgentWorkspaces, useCreateAgent, useSaveAgentConfig, useGrantAgentAccess, useRevokeAgentAccess, useGenerateAgentAvatar, useWorkflowRuns, useConversationActivity, useAgents, ArtifactCanvas, useArbiChat, useDocuments, useTagKindSchema, useCreateTag, useSetTagValues, useUpdateTagKindSchema, useFacts, useDeleteTag, useExtractEntities, useShellWorkspaces, ArbiBotHeadIcon, 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, useUserSettings, useUpdateUserSettings, useAvailableModels, useConnectorVendorVisibility, useConnectorCatalog, useMyConnectors, useDisconnectConnector, useSlackConnection, useDisconnectSlack, isMailboxSyncVendor, isSharePointVendor, useUpdateWorkspace, useAddWorkspaceMembers, useRemoveWorkspaceMembers, useSetWorkspaceMemberRoles, toShellWorkspace, useEnableMailboxSync, useMailboxFolders, useEnableDriveSync, useDriveFolderChildren, connectorErrorStatus, useProjectInvoices, useProjects, useUpdateProjectFields, useUserUsageToday, formatGbp, useChargeWatch, useAddonQuote, STILL_WORKING, useProjectBillingPortal, useIsSlow, useProducts, useCreateProject, useDeleteProject, useRefreshProject, useCanCreateProjects, useDeleteWorkspaces, PROJECT_CREATION_DENIED_REASON, MAX_RETRIEVE_DOC_IDS, useSemanticSearch, useAssignDocTags, useArbiWebSocket, useWorkNotifications, describeServerNotification, useMailUnlock, useMailFolders, useMailMessages, useMailDraftCompose, useMailMessage, useMailCache, MailOfflineUnavailableError, accountPath, useCalendarEvents, useCalendars, useFetchCalendarEvent, useCalendarSettings, useCalendarOverlays, useCalendarOutbox, useCalendarAccounts, useSyncAccountsOnOpen, useResumeCalendarAccountConnect, useCreateEvent, useUpdateEvent, useDeleteEvent, useMoveEvent, useRespondToEvent, useCreateCalendar, useUpdateCalendar, useDeleteCalendar, useImportCalendar, useSaveCalendarSettings, useRefreshCalendar, useCalendarEvent, useMailAttachmentText, useCalendarEventByUid, getPublicBookingPage, bookPublicSlot, PublicBookingError, useDocumentsSupport, isZipFile, prepareUploadFiles, UPLOAD_MAX_FILE_SIZE, filesFromDrop, UPLOAD_ACCEPT, useUploadFromUrls, useUploadFiles, useAgentSession, useStartAgentSession, useCloseAgentSession, isQueuedCalendarWrite, isAliasTakenError, nextAliasSuggestion, aliasTakenMessage, mailJson, connectorReturnTo, ArbiWebSocketProvider, isDeploymentUserNotification, getWorkspaceActionText, getWorkspaceSentPhrase, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_TITLE, documentActivityPhrase, isSignatureNotificationType, inputRequestTitle, WORK_NOTIFICATION_LABELS, documentDisplayName, getWorkspaceKind, formatRelativeTime, useCreateWork, useActOnStep, useConversationThreads, useUpdateTag, usePassageQuotes, useUpdateFact, useDeleteFact, useCreateFact, ProviderIcon, formatGbpPerMillionTokens, useDriveFolderDocCount, useChangeProjectPlan, useCancelProjectSubscription, usePreviewProjectPlanChange, useAddProjectAddonBlock, useProjectUsage, usePlanQuote, useCreateProjectCheckout, useInvalidateProjects, fileAttachment, useMailProjects, useSaveMailDraft, useSendMail, useMailDraftReplaced, useCalendarInvitations, useDecideCounter, useSearchContacts, usePublishCalendar, useCalendarShares, useShareCalendar, useUnshareCalendar, useSubscribeCalendar, useHolidayCountries, useAddHolidayCalendar, cancelPublicBooking, AiAnswer, signatureNotificationPhrase, signatureRequestMeta, getNotificationTypeMeta, useMailDraftEditor, useFreeBusy, useRooms, useFindTime, useCalendarSupport, useStartCalendarAccountOAuth, useConnectOAuthAccount, useBookingPages, useDeleteBookingPage, SHAREPOINT_VENDORS, useUpdateProjectNextPeriodAddons, useUpdateProjectAddonSettings, useSyncCalendarAccount, useUpdateCalendarAccount, useDisconnectCalendarAccount, ACCOUNT_VENDOR, useCalDavProfiles, useConnectCalDavAccount, useSaveBookingPage, useCreateRoom } from '@arbidocs/react';
79
79
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
80
80
  import { getFileTypeIcon, DocumentEntity, cn, getDocumentTitle, Badge, VisibilityIcon, formatFriendlyDate, getEntityLabel, Avatar, AvatarImage, getUserDisplayName, AvatarFallback, getUserInitials, getUserAvatarColor, Button, Label, Input, Textarea, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, tagKindNouns, tagKindTitle, isImageDocument, getEntityColor, IconToggle, VisibilityToggle, Switch, ProjectEntity, DialogFooter, EntityIcon, getDocIcon, Tooltip, TooltipTrigger, TooltipContent, EntityPill, ShieldIcon, getTagTypeLabel, Popover, PopoverTrigger, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, UserEntity, PopoverContent, Tabs, TabsList, TabsTrigger, TabsContent, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, VerifiedToggle, Progress } from '@arbidocs/react/ui';
81
81
  import { useNotify, notify, sharedSearchSession, takePendingSearch } from '@arbidocs/react/shell';
82
- import { SquarePen, BookOpen, MessagesSquare, Pencil, Download, Mail, FolderInput, Trash2, Sparkles, Play, ArrowDownToLine, Bell, Activity, Info, UserCheck, Loader2, Upload, Link2, Search, Plus, ArrowLeft, ExternalLink, Tags, CheckCircle2, Milestone, Monitor, UserCircle, KeyRound, Radio, LogOut, Wifi, RotateCcw, User, HatGlasses, MessageSquare, PlugZap, SquareStack, Table, FileText, Tag, Settings, Video, Printer, CalendarDays, Clock, MapPin, Globe, AlertTriangle, FileX, SkipForward, CheckCircle, ArrowUpCircle, Building2, Contact, Scale, NotebookPen, Check, X, BookA, ChevronDown, Users, Paperclip, Quote, Send, Inbox, CalendarX, CalendarCheck, Minimize2, Maximize2, Minus, CalendarSearch, DoorOpen, RefreshCw } from 'lucide-react';
82
+ import { SquarePen, BookOpen, MessagesSquare, Pencil, Download, Mail, FolderInput, Trash2, Sparkles, Play, ArrowDownToLine, Bell, Activity, Info, UserCheck, Loader2, Upload, Link2, Search, Plus, ArrowLeft, ExternalLink, Tags, CheckCircle2, Milestone, Monitor, UserCircle, KeyRound, Radio, LogOut, Wifi, RotateCcw, User, HatGlasses, MessageSquare, PlugZap, SquareStack, Table, FileText, Tag, Settings, Video, Printer, CalendarDays, Clock, MapPin, Globe, AlertTriangle, FileX, SkipForward, CheckCircle, HardDrive, ArrowUpCircle, Building2, Contact, Scale, NotebookPen, Check, X, BookA, ChevronDown, Users, Paperclip, Quote, Send, Inbox, CalendarX, CalendarCheck, Minimize2, Maximize2, Minus, CalendarSearch, DoorOpen, RefreshCw } from 'lucide-react';
83
83
  import { downloadBlob, useIsOnline, useOptionalDocumentTools, fetchDocumentPdf, DocumentToolsProvider } from '@arbidocs/react/document-tools';
84
84
  import { useStreamedArtifact } from '@arbidocs/react/artifacts';
85
- import { FLAT_TAG_KINDS, TAG_KINDS, refusalReason, getChildTags, tagUseCount, flattenTagTree, isFlatKind, isEntityTag, tagsForScope, filterDocumentTags, isLabelTag, getTagDescendantIds, getEligibleParentTags, canTagHaveParent } from '@arbidocs/sdk/browser';
85
+ import { FLAT_TAG_KINDS, TAG_KINDS, filterDocumentTags, refusalReason, getChildTags, tagUseCount, flattenTagTree, isFlatKind, isEntityTag, tagsForScope, isLabelTag, getTagDescendantIds, getEligibleParentTags, canTagHaveParent } from '@arbidocs/sdk/browser';
86
86
  import { bytesToBase64 } from '@arbidocs/client';
87
87
  import { createPortal } from 'react-dom';
88
88
  import { create } from 'zustand';
@@ -6945,6 +6945,7 @@ function ConnectedWorkspaceSettings({
6945
6945
  shareDialog,
6946
6946
  children,
6947
6947
  onExport,
6948
+ footerActions,
6948
6949
  onOpenActivity,
6949
6950
  onLeft,
6950
6951
  testId = "workspace-settings-page"
@@ -7081,19 +7082,22 @@ function ConnectedWorkspaceSettings({
7081
7082
  )
7082
7083
  ] }),
7083
7084
  children,
7084
- isMember && onExport && /* @__PURE__ */ jsx("div", { className: "flex justify-end px-4 pb-4", children: /* @__PURE__ */ jsxs(
7085
- Button,
7086
- {
7087
- variant: "outline",
7088
- size: "sm",
7089
- onClick: onExport,
7090
- "data-testid": "workspace-transfer-button",
7091
- children: [
7092
- /* @__PURE__ */ jsx(FolderInput, { className: "size-4" }),
7093
- "Export, copy or move\u2026"
7094
- ]
7095
- }
7096
- ) }),
7085
+ isMember && (onExport || footerActions) && /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2 px-4 pb-4", children: [
7086
+ footerActions,
7087
+ onExport && /* @__PURE__ */ jsxs(
7088
+ Button,
7089
+ {
7090
+ variant: "outline",
7091
+ size: "sm",
7092
+ onClick: onExport,
7093
+ "data-testid": "workspace-transfer-button",
7094
+ children: [
7095
+ /* @__PURE__ */ jsx(FolderInput, { className: "size-4" }),
7096
+ "Export, copy or move\u2026"
7097
+ ]
7098
+ }
7099
+ )
7100
+ ] }),
7097
7101
  !isOwner && /* @__PURE__ */ jsx(
7098
7102
  LeaveFooter,
7099
7103
  {
@@ -10535,7 +10539,8 @@ function WorkspaceCardsView({
10535
10539
  onOpenWorkspace,
10536
10540
  onOpenProject,
10537
10541
  onCreateWorkspace,
10538
- createDisabledReason
10542
+ createDisabledReason,
10543
+ workspaceState
10539
10544
  }) {
10540
10545
  const { stripeEnabled } = useBillingSupport();
10541
10546
  const workspaceLabel = getEntityLabel("WORKSPACE");
@@ -10598,27 +10603,35 @@ function WorkspaceCardsView({
10598
10603
  testId: "add-workspace-button"
10599
10604
  }
10600
10605
  ),
10601
- [...group.workspaces].sort(byRecentUpdate).map((workspace) => /* @__PURE__ */ jsx(
10602
- WorkspaceCard,
10603
- {
10604
- workspace: toWorkspaceSummary(workspace, selfId),
10605
- current: currentWorkspaceId === workspace.external_id,
10606
- onSelect: () => onOpenWorkspace(workspace),
10607
- href: buildDeepLinkPath({ workspaceId: workspace.external_id }),
10608
- mark: /* @__PURE__ */ jsx(
10609
- ShieldIcon,
10610
- {
10611
- char: workspace.name.charAt(0),
10612
- workspaceColor: workspaceKindColor(getWorkspaceKind(workspace)),
10613
- size: 28,
10614
- isSelected: true
10615
- }
10616
- ),
10617
- testId: `workspace-card-${workspace.external_id}`,
10618
- openCueTestId: `workspace-open-${workspace.external_id}`
10619
- },
10620
- workspace.external_id
10621
- ))
10606
+ [...group.workspaces].sort(byRecentUpdate).map((workspace) => {
10607
+ const state = workspaceState?.(workspace);
10608
+ const selectLabel = state?.selectLabel;
10609
+ return /* @__PURE__ */ jsx(
10610
+ WorkspaceCard,
10611
+ {
10612
+ workspace: {
10613
+ ...toWorkspaceSummary(workspace, selfId),
10614
+ ...state?.status != null && { subtitle: state.status }
10615
+ },
10616
+ current: currentWorkspaceId === workspace.external_id,
10617
+ onSelect: () => onOpenWorkspace(workspace),
10618
+ href: state?.onSelect ? void 0 : buildDeepLinkPath({ workspaceId: workspace.external_id }),
10619
+ labels: selectLabel ? { openWorkspace: () => selectLabel } : void 0,
10620
+ mark: /* @__PURE__ */ jsx(
10621
+ ShieldIcon,
10622
+ {
10623
+ char: workspace.name.charAt(0),
10624
+ workspaceColor: workspaceKindColor(getWorkspaceKind(workspace)),
10625
+ size: 28,
10626
+ isSelected: true
10627
+ }
10628
+ ),
10629
+ testId: `workspace-card-${workspace.external_id}`,
10630
+ openCueTestId: `workspace-open-${workspace.external_id}`
10631
+ },
10632
+ workspace.external_id
10633
+ );
10634
+ })
10622
10635
  ]
10623
10636
  },
10624
10637
  group.key
@@ -10772,7 +10785,7 @@ function useConnectedWorkspaceList({
10772
10785
  };
10773
10786
  }
10774
10787
  var WorkspaceTableView = lazy(
10775
- () => import('../WorkspaceTableView-5OWX53R5.js').then((m) => ({ default: m.WorkspaceTableView }))
10788
+ () => import('../WorkspaceTableView-FQPJQWUE.js').then((m) => ({ default: m.WorkspaceTableView }))
10776
10789
  );
10777
10790
  var WORKSPACES_TAB_ID = "workspaces";
10778
10791
  var defaultRenderMember2 = (user, size) => {
@@ -10803,7 +10816,8 @@ function ConnectedWorkspaceList({
10803
10816
  activeTab = WORKSPACES_TAB_ID,
10804
10817
  onTabChange,
10805
10818
  children,
10806
- labels
10819
+ labels,
10820
+ workspaceState
10807
10821
  }) {
10808
10822
  const list = useConnectedWorkspaceList({ filters, onFiltersChange, labels });
10809
10823
  const { openProject } = useBlocksEnvironment();
@@ -10817,7 +10831,11 @@ function ConnectedWorkspaceList({
10817
10831
  onViewChange?.(next);
10818
10832
  if (controlledView === void 0) setLocalView(next);
10819
10833
  };
10820
- const open = (workspace) => void openWorkspace(workspace.external_id, { name: workspace.name });
10834
+ const open = (workspace) => {
10835
+ const select = workspaceState?.(workspace)?.onSelect;
10836
+ if (select) select();
10837
+ else void openWorkspace(workspace.external_id, { name: workspace.name });
10838
+ };
10821
10839
  const createDisabledReason = list.canCreateProjects === false ? PROJECT_CREATION_DENIED_REASON : void 0;
10822
10840
  if (list.isLoading) return /* @__PURE__ */ jsx(LoadingIndicator, { message: "Loading workspaces..." });
10823
10841
  if (list.error) {
@@ -10888,7 +10906,8 @@ function ConnectedWorkspaceList({
10888
10906
  onOpenWorkspace: open,
10889
10907
  onOpenProject: openProject,
10890
10908
  onCreateWorkspace,
10891
- createDisabledReason
10909
+ createDisabledReason,
10910
+ workspaceState
10892
10911
  }
10893
10912
  ) })
10894
10913
  ) : /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingIndicator, { message: "Loading grid..." }), children: /* @__PURE__ */ jsx(HomeCenteredColumn, { children: /* @__PURE__ */ jsx(
@@ -10899,7 +10918,8 @@ function ConnectedWorkspaceList({
10899
10918
  onOpenProject: openProject,
10900
10919
  renderMember,
10901
10920
  gridState,
10902
- onGridStateChange
10921
+ onGridStateChange,
10922
+ workspaceState
10903
10923
  }
10904
10924
  ) }) }) })
10905
10925
  ] });
@@ -17963,6 +17983,561 @@ function DragPreview({ doc, count }) {
17963
17983
  }
17964
17984
  );
17965
17985
  }
17986
+ function ConnectedUploadDropzone({
17987
+ onFilesSelected,
17988
+ onFilesRejected,
17989
+ onUrlsSubmit,
17990
+ disabled = false,
17991
+ className = "",
17992
+ maxFileSize = UPLOAD_MAX_FILE_SIZE,
17993
+ title = "Drag & Drop Files, Folders, or Zip Archives Here",
17994
+ subtitle = "or click to browse files (zip files will be extracted)",
17995
+ compact = false,
17996
+ onOpenUpload,
17997
+ workspaceName = "this workspace",
17998
+ source = null,
17999
+ onPickSource,
18000
+ accounts,
18001
+ compactLeadingAction
18002
+ }) {
18003
+ const { extractZip } = useDocumentsSupport();
18004
+ const [dragActive, setDragActive] = useState(false);
18005
+ const [processingMessage, setProcessingMessage] = useState(null);
18006
+ const fileInputRef = useRef(null);
18007
+ const folderInputRef = useRef(null);
18008
+ const take = useCallback(
18009
+ async (chosen) => {
18010
+ if (disabled || chosen.length === 0) return;
18011
+ setProcessingMessage(
18012
+ chosen.some(isZipFile) ? "Extracting zip contents..." : "Processing files..."
18013
+ );
18014
+ try {
18015
+ const { accepted, refused } = await prepareUploadFiles(chosen, { maxFileSize, extractZip });
18016
+ if (refused.length > 0) onFilesRejected?.(refused);
18017
+ if (accepted.length > 0) onFilesSelected(accepted);
18018
+ } finally {
18019
+ setProcessingMessage(null);
18020
+ }
18021
+ },
18022
+ [disabled, maxFileSize, extractZip, onFilesRejected, onFilesSelected]
18023
+ );
18024
+ const handleDrag = useCallback(
18025
+ (e) => {
18026
+ e.preventDefault();
18027
+ e.stopPropagation();
18028
+ if (disabled) return;
18029
+ if (e.type === "dragenter" || e.type === "dragover") setDragActive(true);
18030
+ else if (e.type === "dragleave") setDragActive(false);
18031
+ },
18032
+ [disabled]
18033
+ );
18034
+ const handleDrop = useCallback(
18035
+ async (e) => {
18036
+ e.preventDefault();
18037
+ e.stopPropagation();
18038
+ setDragActive(false);
18039
+ if (disabled) return;
18040
+ await take(await filesFromDrop(e.dataTransfer));
18041
+ },
18042
+ [disabled, take]
18043
+ );
18044
+ const handleFileSelect = useCallback(
18045
+ async (e) => {
18046
+ const chosen = Array.from(e.target.files ?? []);
18047
+ e.target.value = "";
18048
+ await take(chosen);
18049
+ },
18050
+ [take]
18051
+ );
18052
+ const browse = useCallback(
18053
+ (input) => (e) => {
18054
+ if (disabled) return;
18055
+ e?.stopPropagation();
18056
+ if (onOpenUpload) onOpenUpload();
18057
+ else input.current?.click();
18058
+ },
18059
+ [disabled, onOpenUpload]
18060
+ );
18061
+ const onFiles = browse(fileInputRef);
18062
+ const onFolder = browse(folderInputRef);
18063
+ const dropTarget = /* @__PURE__ */ jsx(
18064
+ UploadDropArea,
18065
+ {
18066
+ isActive: dragActive,
18067
+ isDisabled: disabled,
18068
+ isProcessing: processingMessage !== null,
18069
+ processingMessage: processingMessage ?? "Processing files...",
18070
+ isCompact: compact,
18071
+ title,
18072
+ subtitle,
18073
+ onDrag: handleDrag,
18074
+ onDrop: handleDrop,
18075
+ onClick: (e) => {
18076
+ if (e.target === e.currentTarget) onFiles();
18077
+ },
18078
+ actions: compact ? /* @__PURE__ */ jsx(UploadBrowseButtons, { onFiles, onFolder, isDisabled: disabled }) : void 0
18079
+ }
18080
+ );
18081
+ const urlDialog = (trigger) => onUrlsSubmit ? /* @__PURE__ */ jsx(
18082
+ UrlInputDialog,
18083
+ {
18084
+ onUrlsSubmit,
18085
+ processing: disabled,
18086
+ titleWorkspaceName: workspaceName,
18087
+ trigger
18088
+ }
18089
+ ) : null;
18090
+ const body = (() => {
18091
+ if (compact) {
18092
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
18093
+ dropTarget,
18094
+ compactLeadingAction,
18095
+ onUrlsSubmit && /* @__PURE__ */ jsx(UploadSourceSection, { isIsolated: true, className: "flex flex-wrap justify-center gap-2", children: urlDialog(/* @__PURE__ */ jsx(UploadUrlButton, { isDisabled: disabled, isCompact: true })) })
18096
+ ] });
18097
+ }
18098
+ if (!source) {
18099
+ return /* @__PURE__ */ jsx(
18100
+ UploadSourcePicker,
18101
+ {
18102
+ isDisabled: disabled,
18103
+ options: [
18104
+ {
18105
+ key: "computer",
18106
+ label: "From your computer",
18107
+ description: "Upload files or folders",
18108
+ icon: /* @__PURE__ */ jsx(HardDrive, {}),
18109
+ onClick: () => onPickSource?.("computer")
18110
+ },
18111
+ ...accounts ? [
18112
+ {
18113
+ key: "email",
18114
+ label: "From accounts",
18115
+ description: "Sync email and files from your connected accounts",
18116
+ icon: /* @__PURE__ */ jsx(Mail, {}),
18117
+ onClick: () => onPickSource?.("email")
18118
+ }
18119
+ ] : [],
18120
+ // The internet opens its dialog directly, not a scoped view of its own.
18121
+ ...onUrlsSubmit ? [
18122
+ {
18123
+ key: "internet",
18124
+ label: "From URL",
18125
+ description: "Import from a URL or link",
18126
+ icon: /* @__PURE__ */ jsx(Globe, {}),
18127
+ wrap: (button) => urlDialog(button)
18128
+ }
18129
+ ] : []
18130
+ ]
18131
+ }
18132
+ );
18133
+ }
18134
+ if (source === "computer") {
18135
+ return /* @__PURE__ */ jsxs(
18136
+ UploadSourceSection,
18137
+ {
18138
+ testId: "upload-source-computer",
18139
+ className: "flex w-full flex-col gap-3 pointer-coarse:flex-col-reverse",
18140
+ children: [
18141
+ dropTarget,
18142
+ /* @__PURE__ */ jsx(
18143
+ UploadBrowseButtons,
18144
+ {
18145
+ layout: "grid",
18146
+ onFiles,
18147
+ onFolder,
18148
+ isDisabled: disabled
18149
+ }
18150
+ )
18151
+ ]
18152
+ }
18153
+ );
18154
+ }
18155
+ if (source === "internet" && onUrlsSubmit) {
18156
+ return /* @__PURE__ */ jsx(UploadSourceSection, { testId: "upload-source-internet", className: "flex flex-wrap gap-2", children: /* @__PURE__ */ jsx(UploadSourceSection, { isIsolated: true, children: urlDialog(/* @__PURE__ */ jsx(UploadUrlButton, { isDisabled: disabled })) }) });
18157
+ }
18158
+ if (source === "email" && accounts) {
18159
+ return /* @__PURE__ */ jsx(UploadSourceSection, { testId: "upload-source-email", isIsolated: true, children: accounts });
18160
+ }
18161
+ return null;
18162
+ })();
18163
+ return /* @__PURE__ */ jsxs(
18164
+ UploadFrame,
18165
+ {
18166
+ isCompact: compact,
18167
+ isDimmed: disabled || processingMessage !== null,
18168
+ className,
18169
+ children: [
18170
+ !onOpenUpload && /* @__PURE__ */ jsxs(Fragment, { children: [
18171
+ /* @__PURE__ */ jsx(
18172
+ "input",
18173
+ {
18174
+ ref: fileInputRef,
18175
+ type: "file",
18176
+ multiple: true,
18177
+ accept: UPLOAD_ACCEPT,
18178
+ onChange: handleFileSelect,
18179
+ className: "hidden",
18180
+ disabled
18181
+ }
18182
+ ),
18183
+ /* @__PURE__ */ jsx(
18184
+ "input",
18185
+ {
18186
+ ref: folderInputRef,
18187
+ type: "file",
18188
+ multiple: true,
18189
+ ...{ webkitdirectory: "", directory: "" },
18190
+ onChange: handleFileSelect,
18191
+ className: "hidden",
18192
+ disabled
18193
+ }
18194
+ )
18195
+ ] }),
18196
+ body
18197
+ ]
18198
+ }
18199
+ );
18200
+ }
18201
+ var plural = (count, one, many = `${one}s`) => count === 1 ? one : many;
18202
+ function useAddFromUrls({
18203
+ shared = true,
18204
+ configExtId,
18205
+ onZipFiles
18206
+ } = {}) {
18207
+ const { notify: notify14 } = useBlocksEnvironment();
18208
+ const { workspaceId } = useConnectedWorkspace();
18209
+ const uploadFromUrls = useUploadFromUrls();
18210
+ return useCallback(
18211
+ async (urls) => {
18212
+ if (urls.length === 0 || !workspaceId) return false;
18213
+ let result;
18214
+ try {
18215
+ result = await uploadFromUrls({ urls, shared, configExtId });
18216
+ } catch {
18217
+ return false;
18218
+ }
18219
+ const { docIds, skipped, zipFiles, oversizedInZips, failedZipUrls } = result;
18220
+ if (zipFiles.length > 0) {
18221
+ onZipFiles?.(zipFiles);
18222
+ notify14(
18223
+ `Extracted ${zipFiles.length} ${plural(zipFiles.length, "file")} from ZIP. Click Add files to send.`,
18224
+ "success"
18225
+ );
18226
+ }
18227
+ if (oversizedInZips.length > 0)
18228
+ notify14(
18229
+ `Skipped ${oversizedInZips.length} oversized ${plural(oversizedInZips.length, "file")} inside ZIP archives.`,
18230
+ "warning"
18231
+ );
18232
+ if (failedZipUrls.length > 0)
18233
+ notify14(
18234
+ `Failed to fetch ${failedZipUrls.length} ZIP ${plural(failedZipUrls.length, "URL")}. Browser CORS may block third-party hosts \u2014 try a CORS-enabled URL.`,
18235
+ "error"
18236
+ );
18237
+ if (skipped.length > 0)
18238
+ notify14(
18239
+ `${skipped.length} ${plural(skipped.length, "URL was", "URLs were")} skipped:
18240
+ ${skipped.map((s) => `${s.file_name}: ${s.reason}`).join("\n")}`,
18241
+ "warning"
18242
+ );
18243
+ if (docIds.length > 0)
18244
+ notify14(
18245
+ `Upload complete (${docIds.length} ${plural(docIds.length, "document")}). Indexing in the background...`,
18246
+ "success",
18247
+ { workspaceId }
18248
+ );
18249
+ return true;
18250
+ },
18251
+ [workspaceId, uploadFromUrls, shared, configExtId, onZipFiles, notify14]
18252
+ );
18253
+ }
18254
+ function formatFileSize(bytes) {
18255
+ if (bytes === 0) return "0 Bytes";
18256
+ const k = 1024;
18257
+ const sizes = ["Bytes", "KB", "MB", "GB"];
18258
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
18259
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
18260
+ }
18261
+ function renderFileIcon(fileName) {
18262
+ const Icon = getFileTypeIcon(fileName);
18263
+ return /* @__PURE__ */ jsx(Icon, { size: 20 });
18264
+ }
18265
+ function plural2(count) {
18266
+ return getEntityLabel("DOCUMENT", count === 1 ? "SINGULAR" : "PLURAL");
18267
+ }
18268
+ function DefaultFooter({ submit, shared, onSharedChange }) {
18269
+ return /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center justify-end gap-4 border-t border-border px-4 py-3 sm:px-6", children: [
18270
+ /* @__PURE__ */ jsx(
18271
+ ShareToggle,
18272
+ {
18273
+ isVisible: shared,
18274
+ onToggle: onSharedChange,
18275
+ workspaceEntityLabel: getEntityLabel("WORKSPACE"),
18276
+ compact: true
18277
+ }
18278
+ ),
18279
+ submit
18280
+ ] });
18281
+ }
18282
+ function ConnectedUpload({
18283
+ initialFiles,
18284
+ initialUrls,
18285
+ folder = null,
18286
+ source = null,
18287
+ onPickSource,
18288
+ configExtId,
18289
+ closeOnUpload = true,
18290
+ onClose,
18291
+ onUploadComplete,
18292
+ accounts,
18293
+ renderFooter = DefaultFooter
18294
+ }) {
18295
+ const { notify: notify14 } = useBlocksEnvironment();
18296
+ const { openUpgrade } = useFilesSupport();
18297
+ const { workspaceId, live } = useConnectedWorkspace();
18298
+ const { data: workspaces } = useWorkspaces({ enabled: live });
18299
+ const workspaceName = workspaces?.find((w) => w.external_id === workspaceId)?.name ?? "this workspace";
18300
+ const uploadFiles = useUploadFiles();
18301
+ const [files, setFiles] = useState(initialFiles ?? []);
18302
+ const [refused, setRefused] = useState([]);
18303
+ const [error, setError] = useState(null);
18304
+ const [shared, setShared] = useState(true);
18305
+ const [uploading, setUploading] = useState(null);
18306
+ const [progress, setProgress] = useState(null);
18307
+ const { data: tags = [] } = useTags();
18308
+ const generateTagIds = useMemo(
18309
+ () => filterDocumentTags(tags).filter((tag) => tag.instruction && tag.shared).map((tag) => tag.external_id),
18310
+ [tags]
18311
+ );
18312
+ const addFiles = useCallback(
18313
+ (chosen) => setFiles((current) => {
18314
+ if (current.length === 0) return chosen;
18315
+ const names = new Set(current.map((file) => file.name));
18316
+ const fresh = chosen.filter((file) => !names.has(file.name));
18317
+ const duplicates = chosen.length - fresh.length;
18318
+ if (duplicates > 0)
18319
+ notify14(`Skipped ${duplicates} duplicate file${duplicates > 1 ? "s" : ""}`, "info");
18320
+ return [...current, ...fresh];
18321
+ }),
18322
+ [notify14]
18323
+ );
18324
+ const fail = useCallback(
18325
+ (message, toast = true) => {
18326
+ setError(message);
18327
+ if (toast) notify14(message, "error");
18328
+ setUploading(null);
18329
+ setProgress(null);
18330
+ },
18331
+ [notify14]
18332
+ );
18333
+ const handleUpload = useCallback(async () => {
18334
+ if (files.length === 0 || !workspaceId) return;
18335
+ setUploading(files.length);
18336
+ setError(null);
18337
+ try {
18338
+ const { docIds, skipped } = await uploadFiles(
18339
+ { files, folder, shared, configExtId, generateTagIds },
18340
+ setProgress
18341
+ );
18342
+ if (skipped.length > 0) {
18343
+ const summary = skipped.map((s) => `${s.file_name}: ${s.reason}`).join("\n");
18344
+ const quota = skipped.some((s) => /quota|limit/i.test(s.reason ?? ""));
18345
+ notify14(
18346
+ `${skipped.length} ${skipped.length === 1 ? "file was" : "files were"} skipped:
18347
+ ${summary}`,
18348
+ "warning",
18349
+ quota && openUpgrade ? { action: { label: "Upgrade", onClick: openUpgrade }, duration: 8e3 } : void 0
18350
+ );
18351
+ }
18352
+ setFiles([]);
18353
+ if (docIds.length > 0) {
18354
+ const ai = generateTagIds.length > 0 ? " AI annotations queued." : "";
18355
+ notify14(
18356
+ `Uploaded ${docIds.length} ${docIds.length === 1 ? "file" : "files"}. Processing in background...${ai}`,
18357
+ "success",
18358
+ { workspaceId }
18359
+ );
18360
+ }
18361
+ setUploading(null);
18362
+ setProgress(null);
18363
+ onUploadComplete?.();
18364
+ if (closeOnUpload) onClose?.();
18365
+ } catch (err) {
18366
+ const status = err.status;
18367
+ if (status === 402) {
18368
+ fail(err.detail || "Quota exceeded", false);
18369
+ } else {
18370
+ fail("Failed to upload documents. Please try again.");
18371
+ }
18372
+ }
18373
+ }, [
18374
+ files,
18375
+ workspaceId,
18376
+ uploadFiles,
18377
+ folder,
18378
+ shared,
18379
+ configExtId,
18380
+ generateTagIds,
18381
+ notify14,
18382
+ openUpgrade,
18383
+ onUploadComplete,
18384
+ closeOnUpload,
18385
+ onClose,
18386
+ fail
18387
+ ]);
18388
+ const zipFilesAdded = useRef(false);
18389
+ const addFromUrls = useAddFromUrls({
18390
+ shared,
18391
+ configExtId,
18392
+ onZipFiles: (zipFiles) => {
18393
+ zipFilesAdded.current = true;
18394
+ addFiles(zipFiles);
18395
+ }
18396
+ });
18397
+ const handleUrls = useCallback(
18398
+ async (urls) => {
18399
+ if (urls.length === 0) return false;
18400
+ setUploading(urls.length);
18401
+ setError(null);
18402
+ zipFilesAdded.current = false;
18403
+ const ok = await addFromUrls(urls);
18404
+ setUploading(null);
18405
+ if (ok) {
18406
+ if (closeOnUpload && !zipFilesAdded.current) onClose?.();
18407
+ onUploadComplete?.();
18408
+ }
18409
+ return ok;
18410
+ },
18411
+ [addFromUrls, closeOnUpload, onClose, onUploadComplete]
18412
+ );
18413
+ const handedUrls = useRef(false);
18414
+ useEffect(() => {
18415
+ if (handedUrls.current || !initialUrls?.length) return;
18416
+ handedUrls.current = true;
18417
+ void handleUrls(initialUrls);
18418
+ }, [initialUrls, handleUrls]);
18419
+ const count = files.length || uploading || 0;
18420
+ const submit = /* @__PURE__ */ jsxs(
18421
+ Button,
18422
+ {
18423
+ onClick: handleUpload,
18424
+ disabled: files.length === 0,
18425
+ size: "default",
18426
+ "data-testid": "upload-submit-button",
18427
+ children: [
18428
+ "Add ",
18429
+ files.length,
18430
+ " ",
18431
+ plural2(files.length)
18432
+ ]
18433
+ }
18434
+ );
18435
+ return /* @__PURE__ */ jsxs("div", { className: "flex min-h-0 flex-1 flex-col", "data-testid": "upload-documents", children: [
18436
+ /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-y-auto pb-2", children: uploading === null ? /* @__PURE__ */ jsxs(UploadContainer, { className: "w-full px-4 pb-4 pt-2 sm:px-6", children: [
18437
+ files.length === 0 && /* @__PURE__ */ jsx(
18438
+ ConnectedUploadDropzone,
18439
+ {
18440
+ onFilesSelected: addFiles,
18441
+ onFilesRejected: (more) => setRefused((current) => [...current, ...more]),
18442
+ onUrlsSubmit: handleUrls,
18443
+ title: "Drag & drop files or folders",
18444
+ subtitle: "",
18445
+ workspaceName,
18446
+ source,
18447
+ onPickSource,
18448
+ accounts
18449
+ }
18450
+ ),
18451
+ /* @__PURE__ */ jsx(
18452
+ SelectedFilesList,
18453
+ {
18454
+ renderFileIcon,
18455
+ files,
18456
+ onRemoveFile: (index) => setFiles((current) => current.filter((_, i) => i !== index)),
18457
+ onClearAll: () => setFiles([]),
18458
+ formatFileSize
18459
+ }
18460
+ ),
18461
+ /* @__PURE__ */ jsx(RejectedFilesList, { files: refused, onClear: () => setRefused([]) }),
18462
+ error && /* @__PURE__ */ jsx(UploadErrorMessage, { message: error })
18463
+ ] }) : /* @__PURE__ */ jsx(UploadContainer, { className: "w-full p-4 sm:p-6", children: /* @__PURE__ */ jsx(
18464
+ UploadProgress,
18465
+ {
18466
+ fileCount: count,
18467
+ entityLabel: plural2(count),
18468
+ percentage: progress?.percentage ?? 0,
18469
+ batchInfo: progress?.batches ?? null
18470
+ }
18471
+ ) }) }),
18472
+ uploading === null && files.length > 0 && renderFooter({ submit, shared, onSharedChange: setShared })
18473
+ ] });
18474
+ }
18475
+ var VENDOR_PRODUCTS = {
18476
+ microsoft: [{ key: "outlook" }, { key: "onedrive", product: "onedrive" }],
18477
+ gmail: [{ key: "gmail" }, { key: "googledrive", product: "googledrive" }],
18478
+ gdrive: [{ key: "googledrive", product: "googledrive" }]
18479
+ };
18480
+ function AddFromAccountsButton({
18481
+ onImportFromEmail,
18482
+ "data-testid": dataTestId = "empty-import-from-email"
18483
+ }) {
18484
+ const { data: catalog = [] } = useConnectorCatalog();
18485
+ const isVendorVisible = useConnectorVendorVisibility();
18486
+ const vendors = catalog.filter((c) => isVendorVisible(c.vendor_key));
18487
+ if (vendors.length === 0) return null;
18488
+ const seen = /* @__PURE__ */ new Set();
18489
+ const marks = [];
18490
+ for (const v of vendors) {
18491
+ const products = VENDOR_PRODUCTS[v.vendor_key] ?? [{ key: v.vendor_key }];
18492
+ for (const p of products) {
18493
+ if (seen.has(p.key)) continue;
18494
+ seen.add(p.key);
18495
+ marks.push({ key: p.key, vendorKey: v.vendor_key, product: p.product });
18496
+ }
18497
+ }
18498
+ return /* @__PURE__ */ jsxs(
18499
+ Button,
18500
+ {
18501
+ variant: "outline",
18502
+ onClick: onImportFromEmail,
18503
+ className: "gap-2",
18504
+ "data-testid": dataTestId,
18505
+ children: [
18506
+ /* @__PURE__ */ jsx("span", { className: "flex items-center gap-1", children: marks.map((m) => /* @__PURE__ */ jsx(VendorLogo, { vendorKey: m.vendorKey, product: m.product, className: "h-4 w-4" }, m.key)) }),
18507
+ "Add from accounts"
18508
+ ]
18509
+ }
18510
+ );
18511
+ }
18512
+ function EmptyWorkspaceUpload({
18513
+ onFilesSelected,
18514
+ onUrlsSubmit,
18515
+ onImportFromEmail,
18516
+ "data-testid": dataTestId
18517
+ }) {
18518
+ return /* @__PURE__ */ jsx(
18519
+ "div",
18520
+ {
18521
+ className: "flex h-full flex-col items-center gap-3 overflow-y-auto p-8 max-sm:p-4",
18522
+ "data-testid": dataTestId,
18523
+ children: /* @__PURE__ */ jsxs("div", { className: "my-auto flex w-full flex-col items-center gap-3", children: [
18524
+ /* @__PURE__ */ jsx(
18525
+ ConnectedUploadDropzone,
18526
+ {
18527
+ onFilesSelected,
18528
+ onUrlsSubmit,
18529
+ title: "Drag & Drop Files or Folders Here",
18530
+ subtitle: "or click to browse from your computer",
18531
+ compact: true,
18532
+ className: "w-full max-w-2xl",
18533
+ compactLeadingAction: onImportFromEmail && /* @__PURE__ */ jsx(AddFromAccountsButton, { onImportFromEmail })
18534
+ }
18535
+ ),
18536
+ /* @__PURE__ */ jsx(PrivacyExplainerModal, {})
18537
+ ] })
18538
+ }
18539
+ );
18540
+ }
17966
18541
  function ActiveChat({ agentId, workspaceId }) {
17967
18542
  const chat = useArbiChat({
17968
18543
  agentId,
@@ -18030,6 +18605,6 @@ function ConnectedAgentChatPanel({
18030
18605
  ] });
18031
18606
  }
18032
18607
 
18033
- export { AddAddonDialog, ArbiAppProvider, BACKFILL_OPTIONS, BillingProjectEntity, ChangePlanDialog, ConnectedAccountSettings, ConnectedAgentChatPanel, ConnectedAgentCreator, ConnectedAppsSettings, ConnectedCalendar, ConnectedDangerZone, ConnectedDriveSyncDialog, ConnectedFactsPage, ConnectedFilesExplorer, ConnectedIdentityVerification, ConnectedLogoutDialog, ConnectedMailAccounts, ConnectedMailComposer, ConnectedMailInviteCard, ConnectedMailMessage, ConnectedMailSettings, ConnectedMailSetup, ConnectedMailbox, ConnectedMailboxSyncDialog, ConnectedNotificationCenter, ConnectedNotificationPreferences, ConnectedPasswordChangeDialog, ConnectedPremiumModels, ConnectedPrivacySettings, ConnectedProfileCard, ConnectedProjectsPanel, ConnectedPublicBooking, ConnectedRequireVerified, ConnectedSearchPage, ConnectedSecuritySection, ConnectedSessionsRow, ConnectedSettingsPage, ConnectedSkillUpload, ConnectedSkillsLibrary, ConnectedTagTable, ConnectedTagsPage, ConnectedTaskAccessRequest, ConnectedTaskActivityDialog, ConnectedThreadFollow, ConnectedUpcomingEvents, ConnectedWorkflowHistory, ConnectedWorkflowRunner, ConnectedWorkspaceActivity, ConnectedWorkspaceDashboard, ConnectedWorkspaceList, ConnectedWorkspaceMembers, ConnectedWorkspaceNotificationMenu, ConnectedWorkspaceSettings, DEFAULT_CONNECTED_SEARCH_PAGE_LABELS, DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS, DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, DEFAULT_SEARCH_ROW_LABELS, DEFAULT_SETTINGS_SECTIONS, DEFAULT_TIMELINE_LABEL_WIDTH, DEFAULT_WORKSPACE_LIST_LABELS, DocumentSyncGlyph, FACTS_GRID_ID, FileTooltipContent, FilesSupportProvider, InvoicesModal, NewProjectFlow, NotificationCenter, NotificationEvent, PROJECTS_BASE_TAB_ID, ProjectDetail, ProjectsTable, REFERRAL_OFFER, SETTINGS_SECTION_IDS, SessionStatusIcon, SharedProjects, StreamedArtifact, TILE_DEFAULT, TILE_MAX, TILE_MIN, WORKSPACES_TAB_ID, WorkflowRunThread, accountSettingsSection, bookingCancelLink, buildNotificationCenterItems, chatSettingsSection, connectedAppsSettingsSection, countNotificationTypes, defaultUnmetPasswordRequirement, filterNotificationCenterItems, formatLastSync, isActiveDocumentStatus, mailSettingsSection, openMeetingLink, privacySettingsSection, renderSessionStatusIcon, requestCalendarComposer, requestCalendarEvent, requestProjectBillingFocus, resolveMailbox, startMenuItem, toWorkspaceSummary, useAutoRefreshPendingProjects, useCalendarViewStore, useConnectedDocxNotifications, useConnectedShellWorkspaces, useConnectedWorkNotifications, useConnectedWorkspaceList, useConnectedWorkspaceSettings, useFilesStore, useFilesSupport, useOfflineDocumentIds, useOpenBillingPortal, usePendingFolders, useProjectBillingFocus, useReferralReward, useViewingDocumentId, windowLabel, workflowRunView };
18608
+ export { AddAddonDialog, AddFromAccountsButton, ArbiAppProvider, BACKFILL_OPTIONS, BillingProjectEntity, ChangePlanDialog, ConnectedAccountSettings, ConnectedAgentChatPanel, ConnectedAgentCreator, ConnectedAppsSettings, ConnectedCalendar, ConnectedDangerZone, ConnectedDriveSyncDialog, ConnectedFactsPage, ConnectedFilesExplorer, ConnectedIdentityVerification, ConnectedLogoutDialog, ConnectedMailAccounts, ConnectedMailComposer, ConnectedMailInviteCard, ConnectedMailMessage, ConnectedMailSettings, ConnectedMailSetup, ConnectedMailbox, ConnectedMailboxSyncDialog, ConnectedNotificationCenter, ConnectedNotificationPreferences, ConnectedPasswordChangeDialog, ConnectedPremiumModels, ConnectedPrivacySettings, ConnectedProfileCard, ConnectedProjectsPanel, ConnectedPublicBooking, ConnectedRequireVerified, ConnectedSearchPage, ConnectedSecuritySection, ConnectedSessionsRow, ConnectedSettingsPage, ConnectedSkillUpload, ConnectedSkillsLibrary, ConnectedTagTable, ConnectedTagsPage, ConnectedTaskAccessRequest, ConnectedTaskActivityDialog, ConnectedThreadFollow, ConnectedUpcomingEvents, ConnectedUpload, ConnectedUploadDropzone, ConnectedWorkflowHistory, ConnectedWorkflowRunner, ConnectedWorkspaceActivity, ConnectedWorkspaceDashboard, ConnectedWorkspaceList, ConnectedWorkspaceMembers, ConnectedWorkspaceNotificationMenu, ConnectedWorkspaceSettings, DEFAULT_CONNECTED_SEARCH_PAGE_LABELS, DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS, DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, DEFAULT_SEARCH_ROW_LABELS, DEFAULT_SETTINGS_SECTIONS, DEFAULT_TIMELINE_LABEL_WIDTH, DEFAULT_WORKSPACE_LIST_LABELS, DocumentSyncGlyph, EmptyWorkspaceUpload, FACTS_GRID_ID, FileTooltipContent, FilesSupportProvider, InvoicesModal, NewProjectFlow, NotificationCenter, NotificationEvent, PROJECTS_BASE_TAB_ID, ProjectDetail, ProjectsTable, REFERRAL_OFFER, SETTINGS_SECTION_IDS, SessionStatusIcon, SharedProjects, StreamedArtifact, TILE_DEFAULT, TILE_MAX, TILE_MIN, WORKSPACES_TAB_ID, WorkflowRunThread, accountSettingsSection, bookingCancelLink, buildNotificationCenterItems, chatSettingsSection, connectedAppsSettingsSection, countNotificationTypes, defaultUnmetPasswordRequirement, filterNotificationCenterItems, formatLastSync, isActiveDocumentStatus, mailSettingsSection, openMeetingLink, privacySettingsSection, renderSessionStatusIcon, requestCalendarComposer, requestCalendarEvent, requestProjectBillingFocus, resolveMailbox, startMenuItem, toWorkspaceSummary, useAddFromUrls, useAutoRefreshPendingProjects, useCalendarViewStore, useConnectedDocxNotifications, useConnectedShellWorkspaces, useConnectedWorkNotifications, useConnectedWorkspaceList, useConnectedWorkspaceSettings, useFilesStore, useFilesSupport, useOfflineDocumentIds, useOpenBillingPortal, usePendingFolders, useProjectBillingFocus, useReferralReward, useViewingDocumentId, windowLabel, workflowRunView };
18034
18609
  //# sourceMappingURL=index.js.map
18035
18610
  //# sourceMappingURL=index.js.map