@arbidocs/blocks 0.5.24 → 0.5.25

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 (98) hide show
  1. package/dist/{ConnectedNativeDocxComparison-GMQHSY3Z.js → ConnectedNativeDocxComparison-MZX222GC.js} +6 -6
  2. package/dist/{ConnectedNativeDocxComparison-GMQHSY3Z.js.map → ConnectedNativeDocxComparison-MZX222GC.js.map} +1 -1
  3. package/dist/{ConnectedNativeDocxComparison-HH3PHNXU.cjs → ConnectedNativeDocxComparison-WRO3J6VV.cjs} +7 -7
  4. package/dist/{ConnectedNativeDocxComparison-HH3PHNXU.cjs.map → ConnectedNativeDocxComparison-WRO3J6VV.cjs.map} +1 -1
  5. package/dist/{ConnectedNativeDocxEditor-4IAKVBEF.js → ConnectedNativeDocxEditor-OJ6SYZ3W.js} +5 -5
  6. package/dist/{ConnectedNativeDocxEditor-4IAKVBEF.js.map → ConnectedNativeDocxEditor-OJ6SYZ3W.js.map} +1 -1
  7. package/dist/{ConnectedNativeDocxEditor-JNHNZG3P.cjs → ConnectedNativeDocxEditor-XTUJWL25.cjs} +7 -7
  8. package/dist/{ConnectedNativeDocxEditor-JNHNZG3P.cjs.map → ConnectedNativeDocxEditor-XTUJWL25.cjs.map} +1 -1
  9. package/dist/{ConnectedStreamedWordArtifact-CZZOH667.cjs → ConnectedStreamedWordArtifact-5JURNV4L.cjs} +7 -7
  10. package/dist/ConnectedStreamedWordArtifact-5JURNV4L.cjs.map +1 -0
  11. package/dist/{ConnectedStreamedWordArtifact-GLJCJPTP.js → ConnectedStreamedWordArtifact-KURJRZH3.js} +6 -6
  12. package/dist/{ConnectedStreamedWordArtifact-GLJCJPTP.js.map → ConnectedStreamedWordArtifact-KURJRZH3.js.map} +1 -1
  13. package/dist/{WorkspaceTableView-S2PTTVHL.js → WorkspaceTableView-2XI6FIOO.js} +7 -7
  14. package/dist/WorkspaceTableView-2XI6FIOO.js.map +1 -0
  15. package/dist/{WorkspaceTableView-GIDGNGBW.cjs → WorkspaceTableView-KG4D53SK.cjs} +13 -13
  16. package/dist/WorkspaceTableView-KG4D53SK.cjs.map +1 -0
  17. package/dist/agents/index.cjs +326 -326
  18. package/dist/agents/index.js +4 -4
  19. package/dist/{chunk-X4Y7ZHFB.js → chunk-2GDKBLD5.js} +11 -6
  20. package/dist/chunk-2GDKBLD5.js.map +1 -0
  21. package/dist/{chunk-DXO2RXVQ.cjs → chunk-3FQHFFV5.cjs} +4 -4
  22. package/dist/{chunk-DXO2RXVQ.cjs.map → chunk-3FQHFFV5.cjs.map} +1 -1
  23. package/dist/{chunk-AAVFCPKD.js → chunk-3OATYBZK.js} +4 -4
  24. package/dist/{chunk-AAVFCPKD.js.map → chunk-3OATYBZK.js.map} +1 -1
  25. package/dist/{chunk-AF24CV6J.js → chunk-4I2V55LL.js} +3 -3
  26. package/dist/{chunk-AF24CV6J.js.map → chunk-4I2V55LL.js.map} +1 -1
  27. package/dist/{chunk-VNHLFS6T.cjs → chunk-4KLBM5K5.cjs} +4 -4
  28. package/dist/{chunk-VNHLFS6T.cjs.map → chunk-4KLBM5K5.cjs.map} +1 -1
  29. package/dist/{chunk-BTF4AZMG.js → chunk-57CG33XJ.js} +5 -5
  30. package/dist/chunk-57CG33XJ.js.map +1 -0
  31. package/dist/{chunk-KJVDYWAM.cjs → chunk-6UKNYQ7Q.cjs} +13 -8
  32. package/dist/chunk-6UKNYQ7Q.cjs.map +1 -0
  33. package/dist/{chunk-H3XAHVDT.cjs → chunk-6UZ6YTML.cjs} +6 -6
  34. package/dist/{chunk-H3XAHVDT.cjs.map → chunk-6UZ6YTML.cjs.map} +1 -1
  35. package/dist/{chunk-RTAYJUQM.js → chunk-7RFDYAK7.js} +3 -3
  36. package/dist/{chunk-RTAYJUQM.js.map → chunk-7RFDYAK7.js.map} +1 -1
  37. package/dist/{chunk-ZYGQFD5Y.js → chunk-BSDZXG55.js} +3 -3
  38. package/dist/{chunk-ZYGQFD5Y.js.map → chunk-BSDZXG55.js.map} +1 -1
  39. package/dist/{chunk-I5RK4WAE.cjs → chunk-FGZQUH2Y.cjs} +3 -3
  40. package/dist/{chunk-I5RK4WAE.cjs.map → chunk-FGZQUH2Y.cjs.map} +1 -1
  41. package/dist/{chunk-7S76Q5RK.js → chunk-GA2A7OX6.js} +3 -3
  42. package/dist/{chunk-7S76Q5RK.js.map → chunk-GA2A7OX6.js.map} +1 -1
  43. package/dist/{chunk-BL74GYSA.cjs → chunk-JGCYM3II.cjs} +9 -9
  44. package/dist/{chunk-BL74GYSA.cjs.map → chunk-JGCYM3II.cjs.map} +1 -1
  45. package/dist/{chunk-JUUOJP7I.cjs → chunk-KWJW5TMH.cjs} +5 -5
  46. package/dist/chunk-KWJW5TMH.cjs.map +1 -0
  47. package/dist/{chunk-RHKFCSFC.cjs → chunk-LAGHW4JM.cjs} +24 -10
  48. package/dist/chunk-LAGHW4JM.cjs.map +1 -0
  49. package/dist/{chunk-C6P2QW36.js → chunk-NZIVQ4Q4.js} +4 -4
  50. package/dist/{chunk-C6P2QW36.js.map → chunk-NZIVQ4Q4.js.map} +1 -1
  51. package/dist/{chunk-44FPFTU2.js → chunk-ORUV4MEP.js} +3 -3
  52. package/dist/{chunk-44FPFTU2.js.map → chunk-ORUV4MEP.js.map} +1 -1
  53. package/dist/{chunk-75Z5AUMM.js → chunk-QB6JCNVG.js} +3 -3
  54. package/dist/{chunk-75Z5AUMM.js.map → chunk-QB6JCNVG.js.map} +1 -1
  55. package/dist/{chunk-S4G3DNMA.cjs → chunk-QZTA2M4U.cjs} +9 -9
  56. package/dist/{chunk-S4G3DNMA.cjs.map → chunk-QZTA2M4U.cjs.map} +1 -1
  57. package/dist/{chunk-LYF47OXX.cjs → chunk-T67EFI43.cjs} +5 -5
  58. package/dist/{chunk-LYF47OXX.cjs.map → chunk-T67EFI43.cjs.map} +1 -1
  59. package/dist/{chunk-FDUQQNDT.js → chunk-TDFL676I.js} +25 -11
  60. package/dist/chunk-TDFL676I.js.map +1 -0
  61. package/dist/{chunk-YD3RN2FY.cjs → chunk-U72QI2W3.cjs} +3 -3
  62. package/dist/{chunk-YD3RN2FY.cjs.map → chunk-U72QI2W3.cjs.map} +1 -1
  63. package/dist/{chunk-75UVQKQ5.cjs → chunk-WTGJHS7F.cjs} +48 -48
  64. package/dist/{chunk-75UVQKQ5.cjs.map → chunk-WTGJHS7F.cjs.map} +1 -1
  65. package/dist/{chunk-MKTEVOC3.js → chunk-ZKAIT3M2.js} +4 -4
  66. package/dist/{chunk-MKTEVOC3.js.map → chunk-ZKAIT3M2.js.map} +1 -1
  67. package/dist/connect/docx.cjs +9 -9
  68. package/dist/connect/docx.js +5 -5
  69. package/dist/connect/index.cjs +756 -728
  70. package/dist/connect/index.cjs.map +1 -1
  71. package/dist/connect/index.js +102 -74
  72. package/dist/connect/index.js.map +1 -1
  73. package/dist/connect/viewer.cjs +4 -4
  74. package/dist/connect/viewer.js +4 -4
  75. package/dist/connection/projects/ProjectsListPage.d.ts +3 -2
  76. package/dist/facts/index.cjs +55 -55
  77. package/dist/facts/index.js +3 -3
  78. package/dist/index.cjs +409 -409
  79. package/dist/index.js +8 -8
  80. package/dist/settings/index.cjs +162 -162
  81. package/dist/settings/index.js +2 -2
  82. package/dist/workflow-canvas/index.cjs +20 -18
  83. package/dist/workflow-canvas/index.cjs.map +1 -1
  84. package/dist/workflow-canvas/index.js +8 -6
  85. package/dist/workflow-canvas/index.js.map +1 -1
  86. package/dist/workspaces/index.cjs +43 -43
  87. package/dist/workspaces/index.js +3 -3
  88. package/node_modules/@arbidocs/coedit/package.json +1 -1
  89. package/package.json +5 -5
  90. package/dist/ConnectedStreamedWordArtifact-CZZOH667.cjs.map +0 -1
  91. package/dist/WorkspaceTableView-GIDGNGBW.cjs.map +0 -1
  92. package/dist/WorkspaceTableView-S2PTTVHL.js.map +0 -1
  93. package/dist/chunk-BTF4AZMG.js.map +0 -1
  94. package/dist/chunk-FDUQQNDT.js.map +0 -1
  95. package/dist/chunk-JUUOJP7I.cjs.map +0 -1
  96. package/dist/chunk-KJVDYWAM.cjs.map +0 -1
  97. package/dist/chunk-RHKFCSFC.cjs.map +0 -1
  98. package/dist/chunk-X4Y7ZHFB.js.map +0 -1
@@ -1,17 +1,17 @@
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-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
- import { getRoleBadgeClass, formatRole, getRoleDescription, PageLoading, WorkspacePageFrame, WorkspaceIdentityPanel, WorkspaceProjectSlot, WorkspaceAudienceLine, CommonWorkspaceToggle, ExpandableSection, LeaveFooter, ProjectPicker, WorkspaceTypeBadge, WorkspaceList, WorkspaceGroup, WorkspaceCard } from '../chunk-X4Y7ZHFB.js';
5
- import { isAgentAccount, workspaceConversationCount, workspaceDocumentCount, isListedWorkspace, WORKSPACE_CATEGORY_FILTERS, projectFilterId, workspaceFilterAttributes, groupWorkspacesByProject, workspaceGroupStats, byRecentUpdate } from '../chunk-BTF4AZMG.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, 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-7RFDYAK7.js';
3
+ export { CAP_REACHED_MESSAGE, ZERO_BUDGET_MESSAGE, aiUsageResetTimestamp, formatMoney, formatResetDate, getQuotaItems, isAddonBudgetZero, isProProject, planBadgeView, planName, projectGroupBilling, useBillingSupport, useRewardBalance } from '../chunk-7RFDYAK7.js';
4
+ import { getRoleBadgeClass, formatRole, getRoleDescription, PageLoading, WorkspacePageFrame, WorkspaceIdentityPanel, WorkspaceProjectSlot, WorkspaceAudienceLine, CommonWorkspaceToggle, ExpandableSection, LeaveFooter, ProjectPicker, WorkspaceTypeBadge, WorkspaceList, WorkspaceGroup, WorkspaceCard } from '../chunk-2GDKBLD5.js';
5
+ import { isAgentAccount, workspaceConversationCount, workspaceDocumentCount, isListedWorkspace, WORKSPACE_CATEGORY_FILTERS, projectFilterId, workspaceFilterAttributes, groupWorkspacesByProject, workspaceGroupStats, byRecentUpdate } from '../chunk-57CG33XJ.js';
6
6
  import { SharedFileView, SharedFilesInbox } from '../chunk-4ML5AMMO.js';
7
- import { buildFactCitations, citedVersionRef, chronologyFactBodies, docIdsOf, toFactCitations, FactsToolbar, FactsFieldsButton, FactComposer, FactDateInput, FactSourcesRow, FactsLoading, FactsLoadError, FactsEmptyState, FactsCalendar, FactsGanttPane, FactsBulkBar, FactSourceGroup, EMPTY_FACT_DATE_FIELDS, withoutChunk, factDateSpanToFields, FactFieldRow, FactLabelsCell, enableFactTableColumnResize, withChunk, factDateFieldsToSpan, createFactColumns, FactRowActions, withoutDoc, withDoc, sourceDocCount, DEFAULT_FACT_COLUMN_LABELS } from '../chunk-75Z5AUMM.js';
7
+ import { buildFactCitations, citedVersionRef, chronologyFactBodies, docIdsOf, toFactCitations, FactsToolbar, FactsFieldsButton, FactComposer, FactDateInput, FactSourcesRow, FactsLoading, FactsLoadError, FactsEmptyState, FactsCalendar, FactsGanttPane, FactsBulkBar, FactSourceGroup, EMPTY_FACT_DATE_FIELDS, withoutChunk, factDateSpanToFields, FactFieldRow, FactLabelsCell, enableFactTableColumnResize, withChunk, factDateFieldsToSpan, createFactColumns, FactRowActions, withoutDoc, withDoc, sourceDocCount, DEFAULT_FACT_COLUMN_LABELS } from '../chunk-QB6JCNVG.js';
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, 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';
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-TDFL676I.js';
12
12
  export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-MUF3RFJZ.js';
13
- import { useConnectedWorkspaceRole, useConnectedWorkflowScopeSource, ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedNativeDocxEditor, toWorkflowFieldDocument } from '../chunk-AAVFCPKD.js';
14
- export { ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedWorkflowsTable, DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, toWorkflowFieldDocument, useConnectedAgentOptions, useConnectedWorkflowScopeSource, useConnectedWorkspaceRole, useDocxCommentTarget, useNativeDocxSupport } from '../chunk-AAVFCPKD.js';
13
+ import { useConnectedWorkspaceRole, useConnectedWorkflowScopeSource, ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedNativeDocxEditor, toWorkflowFieldDocument } from '../chunk-3OATYBZK.js';
14
+ export { ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedWorkflowsTable, DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, toWorkflowFieldDocument, useConnectedAgentOptions, useConnectedWorkflowScopeSource, useConnectedWorkspaceRole, useDocxCommentTarget, useNativeDocxSupport } from '../chunk-3OATYBZK.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
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';
@@ -24,7 +24,7 @@ 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, Toolbar, glossaryEntries, glossaryDocx, glossaryMarkdown, glossaryFileName } from '../chunk-MKTEVOC3.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, Toolbar, glossaryEntries, glossaryDocx, glossaryMarkdown, glossaryFileName } from '../chunk-ZKAIT3M2.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';
@@ -39,14 +39,14 @@ import '../chunk-NBV56SGU.js';
39
39
  import { ErrorBoundary } from '../chunk-EQ3WRY2N.js';
40
40
  import { LabelMultiSelectView } from '../chunk-JMQLTMJ7.js';
41
41
  import { workspaceKindColor, WorkspaceIdentity } from '../chunk-6MMYWBYS.js';
42
- import { PassagePill, useCopyText } from '../chunk-FUOCCKE4.js';
43
42
  import '../chunk-K4BGOPGG.js';
43
+ import { PassagePill, useCopyText } from '../chunk-FUOCCKE4.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, 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';
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-ORUV4MEP.js';
48
48
  import { MultiSelect } from '../chunk-CQCC7LE7.js';
49
- import { PersonPill, documentScopeLabels, matchWorkflowScope } from '../chunk-7S76Q5RK.js';
49
+ import { PersonPill, documentScopeLabels, matchWorkflowScope } from '../chunk-GA2A7OX6.js';
50
50
  import { SectionLabel } from '../chunk-MQEN62NR.js';
51
51
  import { TriStateFilterMenu } from '../chunk-G4GLDQLY.js';
52
52
  import '../chunk-M4S75AEJ.js';
@@ -59,9 +59,6 @@ import { GridView } from '../chunk-7F5Z4K5W.js';
59
59
  import { StreamedArtifactFrame } from '../chunk-LOJVUGBJ.js';
60
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
- 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
- import { detectTimeZone, utcToDate, formatPlainDate, formatInZone, safeZone, todayInZone, addDays, listTimeZones, wallToUtc } from '../chunk-OJIX5NBN.js';
64
- import { DocumentPicker } from '../chunk-WNDIVNPT.js';
65
62
  import { useTranscriptRuns, TranscriptEntry, ThreadCallLogCard, RecordingCard, useMeetingThreadMessages, threadTranscriptRuns, useProvisionalSpeakers, TranscriptRunsContext, ProvisionalSpeakers, CallConversationEmpty } from '../chunk-7JJ7LU3T.js';
66
63
  export { useMeetingThreadMessages } from '../chunk-7JJ7LU3T.js';
67
64
  import { parseCallLogDetail } from '../chunk-S3YRRD54.js';
@@ -91,6 +88,9 @@ export { requestCalendarComposer, requestCalendarEvent, useCalendarViewStore } f
91
88
  import { ConfirmDialog } from '../chunk-U4HWVCRN.js';
92
89
  import { ModalHeader, ModalScaffold, ModalSection, ModalSectionTitle } from '../chunk-TX2ZICS7.js';
93
90
  import '../chunk-7F6CBP3Z.js';
91
+ 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';
92
+ import { detectTimeZone, utcToDate, formatPlainDate, formatInZone, safeZone, todayInZone, addDays, listTimeZones, wallToUtc } from '../chunk-OJIX5NBN.js';
93
+ import { DocumentPicker } from '../chunk-WNDIVNPT.js';
94
94
  import '../chunk-VUNV25KB.js';
95
95
  import { QueryClient, useQueryClient, QueryClientProvider } from '@tanstack/react-query';
96
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';
@@ -98,7 +98,7 @@ import { mergeAgentSteps, extractSubagentLanes, getCurrentStep, computeRunStats,
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
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
- 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';
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, entityNoun, 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';
104
104
  import { SIGNED_LOCKED_REASON, isSignedVersion, currentHasMarkup, fetchMarkupPdf, downloadBlob, useIsOnline, DocumentToolsProvider, useOptionalDocumentTools, fetchDocumentPdf, useSignatureVerification, SignatureVerificationError } from '@arbidocs/react/document-tools';
@@ -10025,7 +10025,7 @@ function ConnectedDeploymentStorage() {
10025
10025
  const projectColumns = [
10026
10026
  {
10027
10027
  key: "name",
10028
- header: view === "people" ? "Person" : "Project",
10028
+ header: view === "people" ? "Person" : getEntityLabel("PROJECT"),
10029
10029
  render: (p) => /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
10030
10030
  /* @__PURE__ */ jsx("div", { className: "truncate font-medium text-foreground", children: view === "people" ? p.owner_email ?? p.name : p.name }),
10031
10031
  view !== "people" && p.owner_email && /* @__PURE__ */ jsx("div", { className: "truncate text-xs text-muted-foreground", children: p.owner_email })
@@ -10112,7 +10112,7 @@ function ConnectedDeploymentStorage() {
10112
10112
  (deployment.orphaned_bytes > 0 || deployment.unattributed_bytes > 0) && /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", "data-testid": "deployment-storage-unowned", children: [
10113
10113
  formatBytes(deployment.orphaned_bytes),
10114
10114
  " left behind by deleted items (removed by the next monthly clean-up)",
10115
- deployment.unattributed_bytes > 0 && ` \xB7 ${formatBytes(deployment.unattributed_bytes)} not owned by any project`
10115
+ deployment.unattributed_bytes > 0 && ` \xB7 ${formatBytes(deployment.unattributed_bytes)} not owned by any ${entityNoun("PROJECT")}`
10116
10116
  ] }),
10117
10117
  trend.dates.length > 1 && /* @__PURE__ */ jsx(
10118
10118
  UsageLineChart,
@@ -10130,7 +10130,7 @@ function ConnectedDeploymentStorage() {
10130
10130
  onChange: setView,
10131
10131
  ariaLabel: "Storage by",
10132
10132
  options: [
10133
- { value: "projects", label: "Projects" },
10133
+ { value: "projects", label: getEntityLabel("PROJECT", "PLURAL") },
10134
10134
  { value: "people", label: "People" },
10135
10135
  { value: "items", label: "Largest items" }
10136
10136
  ]
@@ -10152,7 +10152,7 @@ function ConnectedDeploymentStorage() {
10152
10152
  rows: [...view === "people" ? people : projects].sort(byBytes),
10153
10153
  getRowId: (p) => p.project_ext_id,
10154
10154
  area: "deployment-storage-projects",
10155
- emptyTitle: view === "people" ? "No personal storage yet" : "No projects yet"
10155
+ emptyTitle: view === "people" ? "No personal storage yet" : `No ${entityNoun("PROJECT", "PLURAL")} yet`
10156
10156
  }
10157
10157
  )
10158
10158
  ]
@@ -12099,11 +12099,11 @@ var sentence = (text2) => text2.trim().replace(/[.;:,\s]+$/, "");
12099
12099
  function refusal(what, next) {
12100
12100
  return `${sentence(what)}. Nothing was charged. ${sentence(next)}.`;
12101
12101
  }
12102
-
12103
- // src/connection/billing/useAddonPurchase.ts
12104
12102
  var FALLBACK_MESSAGES = {
12105
12103
  PAYMENT_DECLINED: "Card declined. Update your card and try again.",
12106
- PAYMENT_METHOD_REQUIRED: "Add a card to this project first.",
12104
+ get PAYMENT_METHOD_REQUIRED() {
12105
+ return `Add a card to this ${entityNoun("PROJECT")} first.`;
12106
+ },
12107
12107
  BILLING_ADDRESS_REQUIRED: "Add a billing address first."
12108
12108
  };
12109
12109
  function addonErrorMessage(error) {
@@ -12118,11 +12118,15 @@ function addonErrorMessage(error) {
12118
12118
  }
12119
12119
  var REFUSALS = {
12120
12120
  PAYMENT_DECLINED: refusal("Card declined", "Update your card and try again"),
12121
- PAYMENT_METHOD_REQUIRED: refusal("No card on this project", "Add one with Update card"),
12122
- BILLING_ADDRESS_REQUIRED: refusal(
12123
- "No billing address on this project",
12124
- "Add one with Update card"
12125
- )
12121
+ get PAYMENT_METHOD_REQUIRED() {
12122
+ return refusal(`No card on this ${entityNoun("PROJECT")}`, "Add one with Update card");
12123
+ },
12124
+ get BILLING_ADDRESS_REQUIRED() {
12125
+ return refusal(
12126
+ `No billing address on this ${entityNoun("PROJECT")}`,
12127
+ "Add one with Update card"
12128
+ );
12129
+ }
12126
12130
  };
12127
12131
  function chargeRefusalMessage(error) {
12128
12132
  const code = addonErrorCode(error);
@@ -12443,9 +12447,9 @@ function ProjectsTable() {
12443
12447
  {
12444
12448
  onSuccess: () => {
12445
12449
  setRenameTarget(null);
12446
- notify.success("Project renamed");
12450
+ notify.success(`${getEntityLabel("PROJECT")} renamed`);
12447
12451
  },
12448
- onError: () => notify.error("Failed to rename project")
12452
+ onError: () => notify.error(`Failed to rename ${entityNoun("PROJECT")}`)
12449
12453
  }
12450
12454
  );
12451
12455
  }, [renameTarget, renameValue, updateProject]);
@@ -12534,26 +12538,32 @@ function SharedProjects() {
12534
12538
  );
12535
12539
  if (shared.length === 0) return null;
12536
12540
  const usedToday = usageToday?.used_gbp ?? 0;
12537
- return /* @__PURE__ */ jsx(SharedProjectsSection, { footnote: "Your daily AI usage allowance in projects other people run \u2014 their plan and billing are theirs.", children: shared.map((p) => {
12538
- const cap = p.daily_cap_per_user;
12539
- return /* @__PURE__ */ jsx(
12540
- SharedProjectRow,
12541
- {
12542
- testId: `shared-project-${p.external_id}`,
12543
- identity: /* @__PURE__ */ jsx(BillingProjectEntity, { name: p.name, relation: "other", size: "sm" }),
12544
- allowance: cap != null && cap > 0 ? /* @__PURE__ */ jsx(
12545
- UsageMeter,
12541
+ return /* @__PURE__ */ jsx(
12542
+ SharedProjectsSection,
12543
+ {
12544
+ footnote: `Your daily AI usage allowance in ${entityNoun("PROJECT", "PLURAL")} other people run \u2014 their plan and billing are theirs.`,
12545
+ children: shared.map((p) => {
12546
+ const cap = p.daily_cap_per_user;
12547
+ return /* @__PURE__ */ jsx(
12548
+ SharedProjectRow,
12546
12549
  {
12547
- label: "Today",
12548
- value: `${formatGbp(usedToday)} / ${formatGbp(cap)}`,
12549
- pct: usedToday / cap * 100,
12550
- testId: `shared-project-allowance-${p.external_id}`
12551
- }
12552
- ) : /* @__PURE__ */ jsx("p", { className: "text-right text-xs text-muted-foreground", children: "No daily limit" })
12553
- },
12554
- p.external_id
12555
- );
12556
- }) });
12550
+ testId: `shared-project-${p.external_id}`,
12551
+ identity: /* @__PURE__ */ jsx(BillingProjectEntity, { name: p.name, relation: "other", size: "sm" }),
12552
+ allowance: cap != null && cap > 0 ? /* @__PURE__ */ jsx(
12553
+ UsageMeter,
12554
+ {
12555
+ label: "Today",
12556
+ value: `${formatGbp(usedToday)} / ${formatGbp(cap)}`,
12557
+ pct: usedToday / cap * 100,
12558
+ testId: `shared-project-allowance-${p.external_id}`
12559
+ }
12560
+ ) : /* @__PURE__ */ jsx("p", { className: "text-right text-xs text-muted-foreground", children: "No daily limit" })
12561
+ },
12562
+ p.external_id
12563
+ );
12564
+ })
12565
+ }
12566
+ );
12557
12567
  }
12558
12568
  var capText = (cap) => cap != null ? String(cap) : "";
12559
12569
  function DailyCapEditor({ project }) {
@@ -13832,15 +13842,19 @@ function ProjectDetail({ projectExtId, storage }) {
13832
13842
  {
13833
13843
  onSuccess: () => {
13834
13844
  setRenameOpen(false);
13835
- notify.success("Project renamed");
13845
+ notify.success(`${getEntityLabel("PROJECT")} renamed`);
13836
13846
  },
13837
- onError: () => notify.error("Failed to rename project")
13847
+ onError: () => notify.error(`Failed to rename ${entityNoun("PROJECT")}`)
13838
13848
  }
13839
13849
  );
13840
13850
  }, [project, renameValue, updateProject]);
13841
13851
  const hasBilling = stripeEnabled && project?.subscription !== "dev";
13842
13852
  if (isLoading) {
13843
- return /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground p-6", children: "Loading project..." });
13853
+ return /* @__PURE__ */ jsxs("div", { className: "text-sm text-muted-foreground p-6", children: [
13854
+ "Loading ",
13855
+ entityNoun("PROJECT"),
13856
+ "..."
13857
+ ] });
13844
13858
  }
13845
13859
  if (!project) {
13846
13860
  return /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground p-6", "data-testid": "project-detail-missing", children: "This project is no longer available." });
@@ -13902,7 +13916,7 @@ function ProjectDetail({ projectExtId, storage }) {
13902
13916
  /* @__PURE__ */ jsx(ChangePlanDialog, { project, open: planOpen, onOpenChange: setPlanOpen })
13903
13917
  ] });
13904
13918
  }
13905
- function createProjectErrorMessage(error, fallback = "Failed to create project") {
13919
+ function createProjectErrorMessage(error, fallback = `Failed to create ${entityNoun("PROJECT")}`) {
13906
13920
  const detail = apiErrorDetail(error);
13907
13921
  if (typeof detail === "string" && detail) return detail;
13908
13922
  const message = detail?.message;
@@ -13988,7 +14002,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
13988
14002
  },
13989
14003
  {
13990
14004
  onSuccess: () => {
13991
- notify.success("Project created");
14005
+ notify.success(`${getEntityLabel("PROJECT")} created`);
13992
14006
  setIsCreating(false);
13993
14007
  onOpenChange(false);
13994
14008
  },
@@ -14045,8 +14059,8 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
14045
14059
  {
14046
14060
  open,
14047
14061
  onOpenChange: handleOpenChange,
14048
- title: "New project",
14049
- description: stripeEnabled ? "Name it and pick a plan." : "Projects group your workspaces.",
14062
+ title: `New ${entityNoun("PROJECT")}`,
14063
+ description: stripeEnabled ? "Name it and pick a plan." : `${getEntityLabel("PROJECT", "PLURAL")} group your ${entityNoun("WORKSPACE", "PLURAL")}.`,
14050
14064
  showDescription: true,
14051
14065
  size: "xl",
14052
14066
  children: /* @__PURE__ */ jsxs(PlanStack, { gap: 5, children: [
@@ -14058,7 +14072,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
14058
14072
  id: "new-project-name",
14059
14073
  value: projectName,
14060
14074
  onChange: (e) => setProjectName(e.target.value),
14061
- placeholder: "My Project",
14075
+ placeholder: `My ${getEntityLabel("PROJECT")}`,
14062
14076
  autoFocus: true,
14063
14077
  onKeyDown: (e) => {
14064
14078
  if (e.key === "Enter") submit();
@@ -14134,7 +14148,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
14134
14148
  )
14135
14149
  ] }) : /* @__PURE__ */ jsx(PlanNotice, { children: "Pro isn't available right now." }))
14136
14150
  ] })),
14137
- /* @__PURE__ */ jsx(PlanActionButton, { onClick: submit, disabled: !canSubmit, children: isCreating ? "Creating\u2026" : isPro ? "Continue to payment" : "Create project" }),
14151
+ /* @__PURE__ */ jsx(PlanActionButton, { onClick: submit, disabled: !canSubmit, children: isCreating ? "Creating\u2026" : isPro ? "Continue to payment" : `Create ${entityNoun("PROJECT")}` }),
14138
14152
  isSlow && /* @__PURE__ */ jsx(PlanNotice, { className: "text-xs", testId: "new-project-still-working", children: "Still working. We'll update here." })
14139
14153
  ] })
14140
14154
  }
@@ -14176,7 +14190,7 @@ function useAutoRefreshPendingProjects() {
14176
14190
  }
14177
14191
  }, [projects, refreshProject, currentUserExtId]);
14178
14192
  }
14179
- var QUOTA_EXCEEDED_MESSAGE = "This project's AI usage for this month is used up.";
14193
+ var quotaExceededMessage = () => `This ${entityNoun("PROJECT")}'s AI usage for this month is used up.`;
14180
14194
  var BOX_MEMBER_QUOTA_MESSAGE = "AI usage for this month is used up. Ask your Box admin to add more.";
14181
14195
  var BOX_ADMIN_QUOTA_MESSAGE = "AI usage for this month is used up. Add more in the ARBI portal.";
14182
14196
  function ConnectedQuotaDialog({ info, onClose: close }) {
@@ -14218,7 +14232,7 @@ function ConnectedQuotaDialog({ info, onClose: close }) {
14218
14232
  close();
14219
14233
  };
14220
14234
  const percent = info && info.budget > 0 ? Math.min(100, Math.round(info.spend / info.budget * 100)) : 100;
14221
- let message = info?.message ?? QUOTA_EXCEEDED_MESSAGE;
14235
+ let message = info?.message ?? quotaExceededMessage();
14222
14236
  let actions = void 0;
14223
14237
  if (box) {
14224
14238
  message = box.isAdmin ? BOX_ADMIN_QUOTA_MESSAGE : BOX_MEMBER_QUOTA_MESSAGE;
@@ -14692,7 +14706,7 @@ function useConnectedWorkspaceList({
14692
14706
  };
14693
14707
  }
14694
14708
  var WorkspaceTableView = lazy(
14695
- () => import('../WorkspaceTableView-S2PTTVHL.js').then((m) => ({ default: m.WorkspaceTableView }))
14709
+ () => import('../WorkspaceTableView-2XI6FIOO.js').then((m) => ({ default: m.WorkspaceTableView }))
14696
14710
  );
14697
14711
  var WORKSPACES_TAB_ID = "workspaces";
14698
14712
  var defaultRenderMember2 = (user, size) => {
@@ -14939,11 +14953,19 @@ var DEFAULT_PROJECT_LIST_COLUMNS = [
14939
14953
  "storage"
14940
14954
  ];
14941
14955
  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",
14956
+ get title() {
14957
+ return getEntityLabel("PROJECT", "PLURAL");
14958
+ },
14959
+ get description() {
14960
+ return `Every ${entityNoun("PROJECT")}: its client, stage, documents and the work on it.`;
14961
+ },
14962
+ get searchPlaceholder() {
14963
+ return `Search ${entityNoun("PROJECT", "PLURAL")} and workspaces\u2026`;
14964
+ },
14945
14965
  columns: {
14946
- name: "Project",
14966
+ get name() {
14967
+ return getEntityLabel("PROJECT");
14968
+ },
14947
14969
  client: "Client",
14948
14970
  stage: "Stage",
14949
14971
  documents: "Documents",
@@ -14952,9 +14974,15 @@ var DEFAULT_PROJECTS_LIST_LABELS = {
14952
14974
  storage: "Storage"
14953
14975
  },
14954
14976
  opened: "opened",
14955
- loadingTitle: "Loading projects\u2026",
14956
- loadingDescription: "Fetching your projects.",
14957
- emptyTitle: "No projects yet"
14977
+ get loadingTitle() {
14978
+ return `Loading ${entityNoun("PROJECT", "PLURAL")}\u2026`;
14979
+ },
14980
+ get loadingDescription() {
14981
+ return `Fetching your ${entityNoun("PROJECT", "PLURAL")}.`;
14982
+ },
14983
+ get emptyTitle() {
14984
+ return `No ${entityNoun("PROJECT", "PLURAL")} yet`;
14985
+ }
14958
14986
  };
14959
14987
  function formatStorageGb(gb3) {
14960
14988
  if (gb3 <= 0) return "\u2014";
@@ -15127,10 +15155,10 @@ function ProjectsPanel({
15127
15155
  },
15128
15156
  ...tabs.openProjectIds.map((id) => ({
15129
15157
  id,
15130
- label: projects?.find((p) => p.external_id === id)?.name ?? "Project",
15158
+ label: projects?.find((p) => p.external_id === id)?.name ?? getEntityLabel("PROJECT"),
15131
15159
  icon: /* @__PURE__ */ jsx(EntityIcon, { entityType: "PROJECT" }),
15132
15160
  onClose: () => tabs.onClose(id),
15133
- closeTooltip: "Close project"
15161
+ closeTooltip: `Close ${entityNoun("PROJECT")}`
15134
15162
  }))
15135
15163
  ],
15136
15164
  [ownedCount, tabs, projects]
@@ -15146,7 +15174,7 @@ function ProjectsPanel({
15146
15174
  afterTabs: (isCompact) => /* @__PURE__ */ jsx(
15147
15175
  PanelAddButton,
15148
15176
  {
15149
- label: "New project",
15177
+ label: `New ${entityNoun("PROJECT")}`,
15150
15178
  onClick: () => setNewProjectOpen(true),
15151
15179
  icon: /* @__PURE__ */ jsx(Plus, { className: "size-4" }),
15152
15180
  isCompact,
@@ -15189,7 +15217,7 @@ function ProjectsPanel({
15189
15217
  {
15190
15218
  open: newProjectOpen,
15191
15219
  onOpenChange: setNewProjectOpen,
15192
- defaultName: `Project ${(projects?.length ?? 0) + 1}`
15220
+ defaultName: `${getEntityLabel("PROJECT")} ${(projects?.length ?? 0) + 1}`
15193
15221
  }
15194
15222
  )
15195
15223
  ] });
@@ -16928,7 +16956,7 @@ function MailComposerForm({
16928
16956
  "label",
16929
16957
  {
16930
16958
  className: "flex items-center gap-1 text-xs text-muted-foreground",
16931
- title: "ARBI's work on this email is billed to this project",
16959
+ title: `ARBI's work on this email is billed to this ${entityNoun("PROJECT")}`,
16932
16960
  children: [
16933
16961
  "Billed to",
16934
16962
  /* @__PURE__ */ jsx(
@@ -38378,7 +38406,7 @@ function ConnectedAccountAccessBadge() {
38378
38406
  "Temporary access to shared workspaces. Ask an owner to renew access after it expires."
38379
38407
  ] : user.user_type === "manager" ? [
38380
38408
  "Account manager",
38381
- "You can manage project billing and usage. Workspace access is managed by workspace owners."
38409
+ `You can manage ${entityNoun("PROJECT")} billing and usage. Workspace access is managed by workspace owners.`
38382
38410
  ] : user.user_type === "blocked" ? [
38383
38411
  "Access restricted",
38384
38412
  "Contact your deployment administrator about your account access."